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_DIR의 define()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.