查看我的服务器日志,我发现我网站上的很多网页都在各种不同的目录中请求favicon.ico
,favicon.jpg
,favicon.png
等。
我正在编写一些apache重定向规则来更改对包含"favicon"
的任何网址的请求以重定向到{{1},而不是浏览每个页面以尝试找出每个不正确的请求的来源。 }
我最初的天真尝试是:
/favicon.ico
但这意味着当您实际请求RewriteRule favicon /favicon.ico [R=301,L]
时,它会将您发送到无限重定向循环。
基本上我认为我需要的是具有这种效果的正则表达式:
/favicon.ico
答案 0 :(得分:11)
我建议改变Alex's excellent answer的一些变化:
保持此部分相同:
RewriteCond %{REQUEST_URI} !^/favicon\.ico [NC]
在请求结束时检查不仅仅是.ico扩展名:
RewriteCond %{REQUEST_URI} favicon\.(ico|png|gif)$ [NC]
添加抓取当前请求主机名的第三个条件:
RewriteCond %{HTTP_HOST} (.+)
最后更改最后一个RewriteRule以使用%1(a backreference representing the last matched condition):
RewriteRule (.*) http://%1/favicon.ico [R=301,L]
最终结果如下:
RewriteCond %{REQUEST_URI} !^/favicon\.ico [NC]
RewriteCond %{REQUEST_URI} favicon\.(ico|png|gif)$ [NC]
RewriteCond %{HTTP_HOST} (.+)
RewriteRule (.*) http://%1/favicon.ico [R=301,L]
希望这有助于某人...
答案 1 :(得分:6)
试试这个
RewriteCond %{REQUEST_URI} !^/favicon\.ico [NC] # if not already going to favicon.ico
RewriteCond %{REQUEST_URI} favicon\.ico [NC] # edit this line to match your favicon matching regex
RewriteRule (.*) http://www.domain.com.au/favicon.ico [R=301,L] #redirect to the real address
答案 2 :(得分:1)
脱离我的头顶:
RewriteRule favicon[.](\w*)$ /favicon.ico [L]
答案 3 :(得分:0)
我会使用这条规则:
RewriteCond %{REQUEST_URI} !^/favicon\.ico$
RewriteRule favicon /favicon.ico [L,R=301]