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にre-writeメソッドを追加しました。次に、パーマリンクページに移動して、保存をクリックします。これを行った結果、.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

私が得るすべては、見つからないページです。ジョシュアの提案は完全に機能しましたが、画像のURLのマスキングと組み合わせて使用​​したいと思っています。

私が間違っているかもしれない何か他に何かありますか、またはチェックする必要がありますか?

更新:

これを読んでいる人のために、私はもう一度試してみたところ、GeertsとJoshuasの方法を組み合わせて使用​​できました。私のFirefoxブラウザーはページをキャッシュしていたようですが、そうではなかったように思われました。

これを.htaccessファイルに入れるのをやめた理由は、このファイルはパーマリンクの管理ページに移動するたびに上書きされるため、誤って上書きしないようにするためです。どういうわけかこれをオフにすることができると思いますが、それを行う方法がわかりません。3つの回答すべてがある程度役立ちました。

回答:


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
この方法を探していたものではありませんが、保存時に管理パーマリンクページを介して.htaccessにルールを配置することになりました。私はこの方法をジョシュアの方法と組み合わせて使用​​することになり、完全に機能します。助けてくれてありがとう。
dreza

かっこいいです。パフォーマンスのために、リライタルを.htaccessにも入れておくのは良いことです。
Geert

この方法は、.htaccessにハードコーディングするのに比べて完全に良いと思います。ここでは、テーマのfunctions.phpに基づいて管理し、必要に応じてこれらのルールをオフにすることもできます。
ジェイク

これは実際にはWordpressに最適な方法です。WP Rewriteのルールは、パーマリンク構造を更新するときにのみ生成されるため、ここで行うことは基本的に.htaccessにそれを書き込むことです。ジェイクが言うように、より扱いやすい方法で。
pospi 2013

1
wp-content/themes彼らはターゲットを動かしているので、おそらくハードコードすべきではありません。global $wp_theme_directories登録されているすべてのテーマディレクトリをループして、現在アクティブなテーマを識別するために使用できます。また、コンテンツディレクトリの編集名WP_CONTENT_DIRを取得するために使用できますdefine()。とにかく、この答えを+1します。
カイザー2013

6

問題が画像のみであり、CSSやJavaScriptではない場合、RewriteRuleにタイプミスがあると思います。「$」の後に「1」がないと思います:

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

また、これらの余分なステートメントを最初のルールの下、つまり次の行の下に置くこともできます。

RewriteRule ^index\.php$ - [L]

確かではありません。


ふざける。それを見なかった。ありがとうございます。
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" />

うーん、コンテンツ領域で[img_folder]を使用する機能が好きですが、wp-content全体を公開するのではなく、/ imagesのURLのみを実際に公開したいと思っていました。しかし、私がそれらをうまく行けば、これをGeertやZweiBlumensの回答と組み合わせることを検討するかもしれません。
dreza
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.