Tim*_*Tim 11 apache favicon .htaccess
如何将根目录或任何子目录中的favicon.ico的所有请求重定向到/images/favicon.ico
Gum*_*mbo 23
试试这条规则:
RewriteEngine on
RewriteRule ^favicon\.ico$ /images/favicon.ico [L]
Run Code Online (Sandbox Code Playgroud)
编辑 并为具有任意路径段深度的favicon.ico:
RewriteCond $0 !=images/favicon.ico
RewriteRule ^([^/]+/)*favicon\.ico$ /images/favicon.ico [L]
Run Code Online (Sandbox Code Playgroud)
对于收藏夹而言,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]
Run Code Online (Sandbox Code Playgroud)
说明:
RewriteCond %{REQUEST_URI} !^/images/favicon\.ico [NC]
:
-确保在请求正确的URI时重定向规则不适用(例如301重定向会将正确的favicon URI写入浏览器缓存-并且此行避免了如果浏览器请求正确的URI处理规则)
-[NC]表示它不区分大小写
RewriteCond %{HTTP_HOST} (.+)
:
-检索http主机名-避免将主机名硬编码为RewriteRule
-这意味着您可以在本地/测试服务器和生产服务器之间复制.htaccess文件,而不会出现问题(或需要将新的网站基本url重新硬编码为您的RewriteRule)
RewriteRule ^(.*)favicon\.(ico|gif|png|jpe?g)$ http://%1/images/favicon.ico [R=301, L]
:
- ^
是正则表达式的开始
- (.*)
是通配符组-表示favicon
URI中的单词之前可以有零个或任意数量的字符(即,这是允许根目录或任何子目录包含在URI中的部分) URI匹配)
- \.(ico|gif|png|jpe?g)
检查该URI扩展匹配任何.ico
,.gif
,.png
,.jpg
,.jpeg
- $
是正则表达式的结束
- http://%1/images/favicon.ico
是重定向URL -并将其注入我们在前面检索到的主机名RewriteCond
。请注意,%1
称为RewriteCond反向引用,这意味着它是最后一个RewriteCond
已满足的条件。(例如%2
,倒数第二RewriteCond
(必须满足)
- R=301
表示这是永久重定向-将重定向存储在浏览器缓存中。测试时要小心-在代码更改之间您需要删除浏览器缓存,否则重定向将不会更新。除非您知道规则行之有效,否则请忽略掉它。
- L
表示此.htaccess
文件中要执行的最后一次重定向-您将不需要此重定向来使规则生效,因为一旦将浏览器定向到正确的url,就不会满足第1行的要求。如果没有第1行或L
RewriteRule,则将导致永久循环(因为重定向URL将继续满足RewriteRule
条件)。不过,最好添加L
无论如何,如果您遵循favicon规则还有其他规则-由于根据favicon.ico请求,您可以(可能)忽略以下任何规则。
您可以.htaccess
在http://htaccess.mwl.be/上测试规则
最后说明:
-请注意,.htaccess
在任何子目录中的文件中都没有其他RewriteRule 。
-例如,如果将此答案放在www.mysite.com/
根文件夹.htaccess
文件中,则文件夹中的RewriteRule (.*) xxx
类型规则www.mysite.com/images/
可能会使结果混乱。
归档时间: |
|
查看次数: |
22237 次 |
最近记录: |