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