使用类似模式重写规则不起作用

Rewrite rule with similar pattern doesn't work

提问人:tampie 提问时间:6/5/2023 最后编辑:tampie 更新时间:6/5/2023 访问量:17

问:

我的.htaccess文件中有一个重写规则,用于将路径重定向到其他路径:

RewriteRule ^tours/$    /tours/page/1/ [R=301,NC,L]

我还想重写该路径中的特定页面,因为某些页面被删除并且 Google Search Console 会发出 404 通知警报:

RewriteRule ^tours/live-in-las-vegas-2020/$                 /tours/live-in-las-vegas-2019/ [R=301,NC,L]

我无法让第二个重定向到正确的页面。这绝对是正确的网址,我试图删除“L”,更改行的顺序并删除“tours”路径。

我把这个放在我的文件顶部

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^(.*)\.rwdb.info$ [NC]
RewriteRule ^(.*)$ https://www.rwdb.info/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /$1/ [NE,L,R=301]

Options All -Indexes
Options +FollowSymLinks

我有这个来美化我的 PHP URL

RewriteRule ^tours/page/([^/]*)/$    /index.php?type=tour&page=$1 [L]
RewriteRule ^tours/([^/]*)/$         /index.php?type=tour-detail&seo_link=$1 [L]

我错过了什么?

正则表达式 Apache .htaccess

评论

0赞 anubhava 6/5/2023
在您的浏览器上工作正常吗?example.com/tours/live-in-las-vegas-2020/
0赞 CBroe 6/5/2023
这两种模式从头到尾只匹配一个特定的 URL 路径,因此这两个规则的顺序在这里应该无关紧要。你还有其他重写指令吗?
0赞 tampie 6/5/2023
@anubhava,是的,但它转到 404 页面,这是正确的,因为该页面不再存在。/tours/example/ 适用于所有现有页面。
0赞 tampie 6/5/2023
@CBroe我已经更新了我的帖子,这些都可以关联吗?对不起,我是正则表达式的新手。

答:

1赞 tampie 6/5/2023 #1

我找到了解决方案,道歉我尝试了这么久,发布后我找到了解决方案。这是一个顺序问题。特定的重定向应放在美化模式上方。