.htaccessファイル - ファビコンをリダイレクト
質問
どのように私は/images/favicon.icoするルートディレクトリにfavicon.icoを、または任意のサブディレクトリに対するすべての要求をリダイレクトします。
解決
このルールを試してください:
RewriteEngine on
RewriteRule ^favicon\.ico$ /images/favicon.ico [L]
<時間>
編集とのfavicon.icoをのための任意のパスセグメントの深さ:
RewriteCond $0 !=images/favicon.ico
RewriteRule ^([^/]+/)*favicon\.ico$ /images/favicon.ico [L]
他のヒント
www.mysite.com/images/favicon.ico
でファビコンのために
最も堅牢な方法は以下のようになります:
RewriteCond %{REQUEST_URI} !^/images/favicon\.ico$ [NC]
RewriteCond %{HTTP_HOST} (.+)
RewriteRule ^(.*)favicon\.(ico|gif|png|jpe?g)$ http://%1/images/favicon.ico [R=301,L,NC]
説明:
RewriteCond %{REQUEST_URI} !^/images/favicon\.ico [NC]
:
-
- 正しいURIが要求された場合にリダイレクトルールが適用されないことを保証します(とブラウザが正しいURIを要求した場合、この行は、ルールを処理回避例えば301リダイレクトは、ブラウザのキャッシュに正しいファビコンURIを記述します)
- [NC]それは
RewriteCond %{HTTP_HOST} (.+)
:
- RewriteRule
の
にホスト名をハードコーディングを避けるために - HTTPホスト名を取得
- これは、問題(またはあなたのRewriteRuleに新しいサイトのベースURLを再ハードコーディングする必要があります)。
RewriteRule ^(.*)favicon\.(ico|gif|png|jpe?g)$ http://%1/images/favicon.ico [R=301, L]
:
- ^
は、正規表現
の始まりです
- URIのワード(.*)
前にゼロまたは任意の数の文字が存在し得ることを意味する(すなわち、これはルートディレクトリまたはサブディレクトリがURIの一致に含まれることを可能にする部分である)
- favicon
ワイルドカード基であります
- URIの拡張子が\.(ico|gif|png|jpe?g)
、.ico
、.gif
、.png
、.jpg
のいずれかと一致する.jpeg
チェック
- $
は、正規表現
の終わりです
- http://%1/images/favicon.ico
は、リダイレクトURLである - そしてそれは我々が以前RewriteCond
で取得したホスト名を注入します。 %1
が、これはそれを意味のRewriteCond後方参照に呼ばれることに注意してください満たされた最後のRewriteCond
です。
(例えば%2
が満たされたのは第二-最後RewriteCond
なります)
- ブラウザのキャッシュにリダイレクトを保存する - R=301
は、それは永久的なリダイレクトを意味します。テストするときは注意してください - あなたは、コードの変更または更新されませんリダイレクトの間、ブラウザのキャッシュを削除する必要があります。あなたはルールの作品を知ってまで、おそらくこれを除外。
- L
この.htaccess
ファイルに従うべきその最後のリダイレクトを意味します - あなたは、ブラウザが正しいURLに向けられたら、ライン1が満たされることはありませんので、作業ルールを取得するためにこれを必要としません。 (リダイレクトURLがL
条件を満たす維持するため)ことなく、ライン1またはのRewriteRuleをRewriteRule
のいずれかは、永久ループになります。 favicon.icoを要求であるため、あなたは(たぶん)任意の次のルールを無視することができます - しかし、それはあなたがファビコンルールに従って他のルールを持っている場合は、とにかくL
を追加することをお勧めします。
あなたは http://htaccess.mwl.be/する
で.htaccess
ルールをテストすることができます
最後の注意:
- あなたのサブディレクトリのいずれかにある.htaccess
ファイル内の他ののRewriteRuleを持っていないことに注意してください
。
- 。例えば、あなたが入れた場合は、のごwww.mysite.com/
ルートフォルダ.htaccess
ファイルで、このの答えは、あなたのRewriteRule (.*) xxx
フォルダ内www.mysite.com/images/
タイプのルールができた結果と混乱
RewriteEngine on
RewriteRule ^(.*)favicon\.ico /images/favicon.ico [L]
私は質問が.htaccess
butタグ付けされている知って、シンボリックリンクを使用しない理由は?
ln -s images/favicon.ico favicon.ico
この迅速なリライトは、トリックを行う必要があります:
RewriteRule ^(.*)favicon.ico /images/favicon.ico