通过我的服务器日志看,我看到了很多我的网站上的网页请求favicon.ico
,favicon.jpg
,favicon.png
,等在各种不同的目录中.
我没有浏览每个页面以试图找出每个不正确的请求来自何处,而是编写了一些apache重定向规则来更改任何包含"favicon"
重定向到的URL的请求/favicon.ico
我最初的天真尝试是这样的:
RewriteRule favicon /favicon.ico [R=301,L]
但这意味着,当您实际请求时,/favicon.ico
它会将您发送到无限重定向循环.
基本上我认为我需要的是具有这种效果的正则表达式:
| Request | Response | |------------------------|--------------| | favicon.png | /favicon.ico | | directory/favicon.png | /favicon.ico | | directory/favicon.ico | /favicon.ico | | favicon.ico ||
Dscoduc.. 11
我建议改变亚历克斯的优秀答案:
保持此部分相同:
RewriteCond %{REQUEST_URI} !^/favicon\.ico [NC]
在请求结束时检查的不只是.ico扩展名:
RewriteCond %{REQUEST_URI} favicon\.(ico|png|gif)$ [NC]
添加抓取当前请求主机名的第三个条件:
RewriteCond %{HTTP_HOST} (.+)
最后更改最后一个RewriteRule以使用%1(表示最后匹配条件的反向引用):
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]
希望这有助于某人......
我建议改变亚历克斯的优秀答案:
保持此部分相同:
RewriteCond %{REQUEST_URI} !^/favicon\.ico [NC]
在请求结束时检查的不只是.ico扩展名:
RewriteCond %{REQUEST_URI} favicon\.(ico|png|gif)$ [NC]
添加抓取当前请求主机名的第三个条件:
RewriteCond %{HTTP_HOST} (.+)
最后更改最后一个RewriteRule以使用%1(表示最后匹配条件的反向引用):
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]
希望这有助于某人......
试试这个
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