gpt4 book ai didi

regex - mod_rewrite regex 仅在某个字符串不存在时才匹配

转载 作者:行者123 更新时间:2023-12-04 09:57:13 25 4
gpt4 key购买 nike

查看我的服务器日志,我看到我网站上的很多页面都在请求 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 | <no match> |

最佳答案

我建议更改一些更改 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]

希望这可以帮助某人...

关于regex - mod_rewrite regex 仅在某个字符串不存在时才匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/514621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com