我正在尝试重定向网页
自:
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
有人可以告诉我这里有什么问题。
答案 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
即使它远非性感。
您可能还会对以下命令RedirectMatch
和RewriteEngine on
感兴趣:
https://superuser.com/questions/155139/htaccess-301-redirect-with-regular-expressions
祝你好运!