将查询字符串重定向到新的“漂亮” URL,以避免重复的内容

问题描述 投票:1回答:1

什么是最好的.htaccess重写代码来强制像这样的URL

https://www.example.com/index.php?page=report/tinytoes_mothercare

到那个?

https://www.example.com/report/tinytoes_mothercare

我的网站已经解决了https://www.example.com/report/tinytoes_mothercare,因此,我想避免上面的URL丑陋和错误的任何重复内容。

.htaccess url clean-urls
1个回答
1
投票

您可以在.htaccess文件的顶部执行以下操作,之前现有rewrite(“解析” pretty URL)以使用新的pretty URL的查询字符串。

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^page=([\w/-]*)
RewriteRule ^index\.php$ /report/%1 [R=302,L]

检查环境变量REDIRECT_STATUS的第一个条件确保了通过重定向重写的URL不会导致重定向循环。 REDIRECT_STATUS在初始请求上为空,因此仅重定向来自客户端的直接请求。

第二个条件从查询字符串page URL参数获取必要的值。这与字符a-zA-Z0-9_(下划线),/(斜线)和-(连字符)相匹配-如您的示例URL。如果您需要匹配更多的变化形式,那么字符类将需要扩展。然后,使用RewriteRule后向引用在%1 substitution字符串中使用此值。

请注意,这是302(临时)重定向。仅在确定可以正常工作时才更改为301(永久),以避免缓存问题。

© www.soinside.com 2019 - 2024. All rights reserved.