我已经为一个客户端创建了新的网站,现在我正在.htaccess文件中执行所有重定向。对于下面几行中的源url部分,我有点困惑。
这两条线是同一条吗?

Redirect 301 /shop/contact-us http://www.example.com/contact-us/
Redirect 301 /shop/contact-us/ http://www.example.com/contact-us/

最佳答案

如果要使用许多可选的尾部斜杠将/shop/contact-us重定向到http://www.example.com/contact-us,则Redirect指令不太合适。改为使用RedirectMatch指令:

RedirectMatch 301 "^/shop/(contact\-us)/?" http://www.example.com/$1/

哪里
^是一个锚,意思是“行的开始”;
/?匹配零个或一个斜杠字符;
(contact\-us)是一个捕获组(由$1引用)
注意,正则表达式只匹配前缀,因为只使用了^锚。您可以使用$(行尾)锚定使表达式更严格,例如:
RedirectMatch 301 "^/shop/(contact\-us)/*$" http://www.example.com/$1/

其中/*表示零个或多个斜杠。

关于php - .htaccess中的这两个重定向之间有什么区别,以及如何为这两个重定向编写单个重定向,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41805755/

10-13 02:48