【发布时间】:2021-03-14 11:11:07
【问题描述】:
我无法编写匹配双斜杠的规则。
在我的 .htacess 文件中:
#RULE 1:
RewriteCond %{REQUEST_URI} ^.*hi1.*$
RewriteRule ^.*$ https://www.google.com/ [R=301,L]
#RULE 2:
RewriteCond %{REQUEST_URI} ^.*hi2/.*$
RewriteRule ^.*$ https://www.google.com/ [R=301,L]
#RULE 3:
RewriteCond %{REQUEST_URI} ^.*hi3//.*$
RewriteRule ^.*$ https://www.google.com/ [R=301,L]
结果:
https://www.example.com/hi1//
successfully redirects to google
https://www.example.com/hi2//
successfully redirects to google
https://www.example.com/hi3//
fails to redirect to google
第三个网址产生以下内容:
抱歉,此页面不存在。
请检查网址或返回页面。
404 错误。找不到页面。
编辑#1:
有趣的是:
#RULE 4:
RewriteCond %{REQUEST_URI} ^.*hi4/.*/.*$
RewriteRule ^.*$ https://www.google.com/ [R=301,L]
结果:
https://www.example.com/hi4/abc/
successfully redirects to google
https://www.example.com/hi4//
fails to redirect to google
编辑#2:
我原来的帖子似乎引起了混乱。我会尽量清楚一点:我需要一个规则来匹配以双斜杠结尾的 url,并且不匹配不以双斜杠结尾的 url。目前,我的 .htaccess 文件仅包含以下内容:
RewriteEngine on
RewriteRule yoyo https://www.cnn.com/ [R=301,L]
RewriteCond %{THE_REQUEST} //$
RewriteRule ^.*$ https://www.google.com/ [R=301,L]
结果:
https://www.example.com/about-us//
fails to redirect to google, and yields 404 error
(第一条规则(悠悠球)只是为了确保没有缓存。)
编辑#3:
我看到混乱仍在继续。所以,我的 .htaccess 文件只包含:
RewriteEngine on
RewriteCond %{THE_REQUEST} //$
RewriteRule ^.*$ https://www.google.com/ [R=301,L]
结果:
https://www.example.com/about-us//
fails to redirect to google, and yields 404 error
这一次,我想我们可以排除缓存,因为我在我的一个网站上使用了 .htaccss,之前没有 .htaccess 文件。
简单地说,我匹配以双斜杠结尾的网址的努力失败了。
【问题讨论】:
-
这个条件应该有效
RewriteCond %{THE_REQUEST} ^.*hi3//.*$ -
oguzhancerit:非常感谢。那些对我不起作用。阿米特:非常感谢。听起来你是在告诉我,我的第三条规则实际上应该起作用。我不明白为什么不是。
-
@Oyvey 尝试清除浏览器缓存并将
REQUEST_URI更改为THE_REQUEST。 -
如上所述,规则#3 和#4 应该按预期工作,并针对所述情况触发重定向。您的
.htaccess文件中还有其他指令吗?上面已经提到了缓存,但是您应该使用 302(临时)重定向来测试它以避免缓存问题。 301 默认情况下会被浏览器持久缓存,因此可能会导致测试出现问题。
标签: apache .htaccess redirect mod-rewrite url-rewriting