题
我怎么向所有请求图标。ico在根目录或任何子目录/images/图标。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要求(例如301重定向会写正确的图标URI浏览器高速缓存这线可以避免处理的规则,如果浏览器的要求的正确URI)
-[NC]意味着它不是情况的敏感
RewriteCond %{HTTP_HOST} (.+)
:
-检索http主机名称,以避免硬编码hostname入 RewriteRule
-这意味着你可以复制你的.就文件之间的地方/检测服务器和生产服务器没有问题的(或者需要重新硬编码你的新网站的基本网址进入你的RewriteRule)
RewriteRule ^(.*)favicon\.(ico|gif|png|jpe?g)$ http://%1/images/favicon.ico [R=301, L]
:
- ^
是开始的regex
- (.*)
是通配符的集团,这意味着,有可能是零或任何数目的人物之前的单词 favicon
在URI(即这是一部分,允许根目录或任何子目录应包括URI比赛)
- \.(ico|gif|png|jpe?g)
检查URI扩展的任何匹配 .ico
, .gif
, .png
, .jpg
, .jpeg
- $
是的结束regex
- http://%1/images/favicon.ico
是向url-它将主机名称,我们在前面 RewriteCond
.注意, %1
是一个叫做 重写过反向引用 这意味着这是最后一个 RewriteCond
这已经得到满足。(例如: %2
将第2-最后一个 RewriteCond
这已经得到满足)
- R=301
意味着它的永久重新定向-它储存的改向浏览器中的高速缓存。时要小心测试-你需要删除浏览器高速缓存的代码之间的变化或重新定向将不会更新。可能离开这了,直到你知道规则的工作。
- L
意味着它的最后的重新定向将随后在这 .htaccess
文件-你不需要这个来获得规则的工作,因为第1行不会遇到过一次的浏览器是引导到正确的网址。没有任何一线1或 L
该RewriteRule将导致一个永久循环(由于重新定向的网址将继续满足 RewriteRule
条件)。然而,这是一个好主意添加的 L
无论如何,如果你有其他规则下的图标规则,因为在一个图标。ico请求,可以(可能)无视任何以下规则。
你可以测试 .htaccess
规则 http://htaccess.mwl.be/
最后的注:
-你要小心,没有任何其他RewriteRule在 .htaccess
文件在您的任何子目录。
-如果你把 此 在你的答案 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