使用分页查询字符串重定向太多

时间:2017-12-07 00:49:24

标签: regex apache .htaccess redirect mod-rewrite

我正在尝试重定向网页

自: mysite.com/cata/catb

mysite.com/cata/catb?p=1

但最终有很多p = 1

mysite.com/cata/catb?p=1?p=1?p=1?p=1?p=1?p=1?p=1?p=1?p=1

我的.htaccess是

redirect 301 ^/cata/catb$ /cata/catb?p=1

有人可以告诉我这里有什么问题。

2 个答案:

答案 0 :(得分:2)

您的代码将/cats/catb重定向到同一目录/文件,这就是您收到循环错误的原因。要解决此问题,您需要使用mod-rewrite和排除目标查询字符串的RewriteCond

尝试:

RewriteEngine on

RewriteCond %{QUERY_STRING} !^p=1$
RewriteRule ^cata/catb/?$ /cata/catb?p=1 [L,R]

答案 1 :(得分:0)

我认为您的redirect 301 ^/cata/catb$ /cata/catb?p=1重定向正则表达式仅适用于您网址的路径路径,并忽略您的结束参数?p=1

因此,重定向以一种递归的方式完成:

/cata/catb → /cata/catb?p=1
/cata/catb?p=1 → /cata/catb?p=1?p=1
/cata/catb?p=1?p=1 → /cata/catb?p=1?p=1?p=1
...

您可以尝试更改

吗? redirect 301 ^/cata/catb$ /cata/catb?p=1中的

redirect 301 ^/cata/catb$ /cata/catc?p=1并检查输出?

或在您的路径中添加尾随"/" - > /cata/catb/?p=1即使它远非性感。

您可能还会对以下命令RedirectMatchRewriteEngine on感兴趣:

https://superuser.com/questions/155139/htaccess-301-redirect-with-regular-expressions

祝你好运!