htaccess를 사용하여 wp-content / themes / name / images를 이미지 디렉토리로 마스킹


10

내 URL을 실제로 가리는 단순한 방법이라고 생각하지만 효과가없는 것 같습니다. 전체 URL을 입력하지 않고도 img 태그의 이미지에 연결할 수 있기를 원합니다.

Current url:  http://server.com/wp-content/themes/standard/images/img.jpg
or
<img src = "http://server.com/wp-content/themes/standard/images/img.jpg" />

그러나 내 페이지에서 그냥하고 싶습니다.

<img src="http://server.com/images/img.jpg" />

그러나 로컬 호스트에서 아무것도 작동하지 않는 것 같습니다. Windows 7 컴퓨터에서 Apache 서버를 실행하고 있습니다. 위에서 언급 한 작업을 수행하기 위해 .htaccess를 사용하려고합니다. 여기 내 웹 사이트의 루트에있는 .htaccess 파일이 있습니다.

업데이트 : 아래에서 ZweiBlumen 제안을 시도했지만 작동하지 않는 것 같습니다. 그런 다음 Geerts 제안을 시도하고 관리자 폴더의 misc.php에 다시 쓰기 방법을 추가했습니다. 그런 다음 영구 링크 페이지로 이동하여 저장을 누르십시오. 이 작업을 수행 한 결과 내 .htaccess 폴더가 다시 작성되었으며 출력 결과는 다음과 같습니다.

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^css/(.*) /wp-content/themes/standard/css/$1 [QSA,L]
RewriteRule ^js/(.*) /wp-content/themes/standard/js/$1 [QSA,L]
RewriteRule ^images/(.*) /wp-content/themes/standard/images/$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

그러나 여전히 다음과 같은 이미지 폴더로 이동할 수 없습니다.

HTTP : //localhost/images/myimage.jpg .

내가 얻는 것은 페이지를 찾을 수 없습니다. Joshua의 제안은 완벽하게 작동했지만 이미지 URL을 마스킹하는 것과 함께 사용하기를 희망합니다.

내가 잘못하고있는 것이 있습니까? 아니면 확인해야합니까?

최신 정보:

이것을 읽는 사람은 방금 다시 시도했고 Geerts와 Joshuas 방법을 조합하여 사용했습니다. Firefox 브라우저가 페이지를 캐싱 한 것으로 보이며 페이지를 캐싱하지 않은 것으로 생각했습니다.

내가 .htaccess 파일에 넣는 것에 대해이 작업을 수행 한 이유는 permalinks 관리 페이지로 갈 때 마다이 파일을 덮어 쓰기 때문에 실수로 덮어 쓰지 않기 때문입니다. 어떻게 든 이것을 끌 수는 있지만 어떻게 해야할지 잘 모르겠습니다. 세 가지 답변 모두 어느 정도 도움이되었습니다.

답변:


10

루츠 워드 프레스 테마를 확인하십시오 . 그들은 URL로 원하는 것을 정확하게하는 것처럼 보입니다.

다음은 roots-htaccess.php 파일 의 스 니펫입니다 .

add_action( 'generate_rewrite_rules', 'roots_add_rewrites' );

function roots_add_rewrites($content) {
  $theme_name = next( explode( '/themes/', get_stylesheet_directory() ) );
  global $wp_rewrite;
  $roots_new_non_wp_rules = array(
    'css/(.*)' => 'wp-content/themes/' . $theme_name . '/css/$1',
    'js/(.*)'  => 'wp-content/themes/' . $theme_name . '/js/$1',
    'img/(.*)' => 'wp-content/themes/' . $theme_name . '/img/$1',
  );
  $wp_rewrite->non_wp_rules += $roots_new_non_wp_rules;
}

참고 : .htaccessZweiBlumen의 답변에서와 같이 파일 에서 직접이 정보를 가져올 수있는 경우 해당 솔루션이 더 최적화되어 있으므로 해당 솔루션을 선택해야합니다.


1
내가이 방법을 찾고있는 것은 아니지만 저장시 관리자 permalinks 페이지를 통해 규칙을 .htaccess에 넣었습니다. 나는이 방법을 Joshuas와 함께 사용했으며 완벽하게 작동합니다. 도와 주셔서 감사합니다.
dreza dec

시원하게, 성능을 위해 rewriterule을 .htaccess에 넣는 것도 좋은 일입니다.
Geert

이 방법은 .htaccess로 하드 코딩하는 것과 비교하여 완벽하게 좋습니다. 여기에서 테마의 functions.php를 기반으로 관리하고 필요한 경우 이러한 규칙을 끌 수도 있습니다.
Jake

이것은 실제로 Wordpress에 가장 적합한 방법입니다. WP Rewrite의 규칙은 permalinks 구조를 업데이트 할 때만 생성되므로 여기서하는 일은 본질적으로 .htaccess에 작성하는 것입니다. 제이크가 말한 것처럼 더 관리하기 쉬운 방식이지만.
pospi

1
wp-content/themes타겟을 이동함에 따라 하드 코딩 되어서는 안됩니다 . global $wp_theme_directories등록 된 모든 테마 디렉토리를 반복하고 현재 활성화 된 테마를 식별하는 데 사용될 수 있습니다. 그리고 컨텐츠 디렉토리 WP_CONTENT_DIRdefine()ed 이름 을 얻는 데 사용될 수 있습니다 . 어쨌든이 답변에 +1하십시오.
카이저

6

문제가 이미지에만 있지만 CSS 또는 자바 스크립트가 아닌 경우 RewriteRule에 오타가 있다고 생각합니다. "$"다음에 "1"이 누락 된 것 같습니다.

RewriteRule ^images/(.*)$ wp-content/themes/standard/images/$1 [L]

또한 추가 규칙을 초기 규칙 아래 (예 :이 줄 아래)에 추가 할 수도 있습니다.

RewriteRule ^index\.php$ - [L]

그래도 확실하지 않습니다.


uck. 그것을 보지 못했습니다. 고마워 내가 갈게
dreza

4

다음과 같은 방식으로 단축 코드를 작성하지 않겠습니까?

function img_folder_shortcode( ) {
   return get_stylesheet_directory_uri() . '/images';
}
add_shortcode( 'img_folder', 'img_folder_shortcode' );

그런 다음 컨텐츠 영역의 어느 곳에서나 다음 단축 코드를 사용하십시오.

[img_folder]/img.jpg
<img src="[img_folder]/img.jpg" alt="img" />

hmmm, 내용 영역에서 [img_folder]를 사용하는 기능이 마음에 들지만 실제로는 전체 wp-content가 아닌 / images url을 원합니다. 그러나 Geert와 ZweiBlumens의 대답을 결합하면 볼 수 있습니다.
dreza
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.