web-dev-qa-db-ja.com

Htaccessを使ってwp-content/themes/name/imagesをimagesディレクトリに隠す

私は自分のURLを隠すのが本当に簡単なものだと思っていたものを試していますが、うまく動作するようには思えません。私は自分のimgタグの中の画像にリンクせずに完全なURLを入力する必要がないようにしたいです。

すなわち.

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 Adminページに行くたびに上書きされるので、誤って上書きしないようにするためです。私はこれをどうにかしてオフにすることができると思いますが、それをする方法がわからない。 3つの答えすべてがある程度役立ちました。

10
dreza

Roots WordPress Theme をチェックしてください。彼らはあなたがURLであなたが望むことを丁度しているようです。

これが roots-htaccess.php fileからの抜粋です。

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;
}

注:ZweiBlumenの答えのように.htaccessファイルで直接これをやめることができる場合は、おそらく最も最適化されているのでその解決策を選ぶべきです。

10
Geert

問題が画像だけで、CSSやJavascriptではない場合、RewriteRuleにタイプミスがあると思います。 "$"の後に "1"が抜けていると思います。

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

また、これらの追加のステートメントを最初のルールの下、つまりこの行の下に配置してみることをお勧めします。

RewriteRule ^index\.php$ - [L]

よくわかりません。

6
ZweiBlumen

次のようにしてショートコードを作成してみませんか。

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" />
4
Joshua Abenazer