简单的301重定向在这种情况下不起作用-例如:
Redirect 301 /oldpage http://www.mysite.co.uk/newsubdir/newpage
该网站是动态的,.htaccess已经将页面从包含查询字符串的网址重命名为搜索引擎友好的网址。
RewriteRule ^(.*)/(.*)$ index.php?page_name=$1&sub=$2 [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)([^/])$ http://www.mysite.co.uk/$1$2/ [R=301,L]
当我们在相同的.htaccess (在底部)中使用上面的301重定向时,页面是重定向的,但是查询字符串被添加到URL的末尾,这令人沮丧,我们还没有弄清楚为什么或如何阻止它。
经过301重定向后,URL如下所示:
http://www.mysite.co.uk/newsubdir/newpage/?page_name=old-page&sub=
...Causing一个404错误--只是添加在URL末尾的查询字符串破坏了重定向。
请任何人可以建议需要做些什么来解决这个问题?
谢谢
发布于 2011-09-21 08:47:24
在URL末尾添加问号?
,以防止现有查询字符串被复制到新的URL:
Redirect 301 /oldpage http://www.mysite.co.uk/newsubdir/newpage?
但由于您已经在使用mod_rewrite,我建议您也将其用于此任务(将此规则置于其他重写规则之上):
RewriteRule ^oldpage$ http://www.mysite.co.uk/newsubdir/newpage? [R=301,L]
发布于 2018-04-03 06:19:52
重定向301 /oldfile.htm http://www.example.com/newfile.htm
使用它。工作正常。
https://stackoverflow.com/questions/7487331
复制相似问题