.htaccess - 301 使用 get 变量重定向分页

标签 .htaccess mod-rewrite rewrite http-status-code-301

我正在尝试在 URL 中包含“page=1”的页面上设置 301 重定向以阻止重复内容问题。

例如

http://www.domain.com/reviews/?page=1http://www.domain.com/reviews/

我已经尝试了所有我能找到的变体,但似乎无法让任何东西发挥作用。

RewriteRule ^reviews(/)?page=1$ http://www.domain.com/reviews/ [L,R=301]

RewriteRule ^(.*)/?page=1 http://www.domain.com/reviews/ [R=301,L]

RewriteCond %{QUERY_STRING} page=1
RewriteRule ^reviews$ http://www.domain.com/reviews/ [R=301,L,NE]

这些都没有用。我不太确定还能尝试什么。

我需要为网站的多个不同部分执行此操作:

reviews
news
videos
accessories
hardware

将所有 ?page=1 URL 重定向到其相关部分的整体解决方案是最好的。

最佳答案

使用此代码将每个带有 ?page=1 的 URI 重定向到没有查询参数的 URI:

RewriteCond %{QUERY_STRING} ^page=1(&|$) [NC]
RewriteRule ^ %{REQUEST_URI}? [R=301,L]

否则,如果您只想重定向 /reviews URI,则

RewriteCond %{QUERY_STRING} ^page=1(&|$) [NC]
RewriteRule ^(reviews)/?$ /$1? [R=301,L]

关于.htaccess - 301 使用 get 变量重定向分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16039486/

相关文章:

.htaccess - Laravel 默认 .htaccess 文件将不起作用

regex - htaccess 重写规则不适用于某些页面

apache - "site down"页的重写规则

c# - 如何删除文本文件的前 "X"行?

class - Magento 重复类重写

php - Laravel 5.4 无法访问实时服务器中的 css

PHP - 更改 URL 以隐藏查询字符串并显示页面标题

php - .htaccess 多域重写

apache - mod_rewrite 删除一个 GET 变量

.htaccess 重定向,如果 url 中的文件夹名称