zig*_*cko 3 .htaccess mod-rewrite redirect
在这种情况下,简单的 301 重定向不起作用 - 例如:
Redirect 301 /oldpage http://www.mysite.co.uk/newsubdir/newpage
Run Code Online (Sandbox Code Playgroud)
该站点是动态的,.htaccess 已经将页面从包含查询字符串的 URL 重命名为搜索引擎友好的 URL。
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]
Run Code Online (Sandbox Code Playgroud)
当我们在同一个 .htaccess(底部)中使用这些 301 重定向时,页面正在重定向,但查询字符串令人沮丧地添加到 URL 的末尾,我们还没有弄清楚为什么或如何阻止它.
301 重定向后,URL 如下所示:-
http://www.mysite.co.uk/newsubdir/newpage/?page_name=old-page&sub=
Run Code Online (Sandbox Code Playgroud)
...导致 404 错误 - 只是在 URL 末尾添加的查询字符串破坏了重定向。
请任何人都可以建议需要做些什么来解决这个问题?
谢谢
?在 URL 末尾添加问号以防止将现有查询字符串复制到新 URL:
Redirect 301 /oldpage http://www.mysite.co.uk/newsubdir/newpage?
Run Code Online (Sandbox Code Playgroud)
但由于您已经在使用 mod_rewrite,我建议您也将其用于此任务(将此规则置于其他重写规则之上):
RewriteRule ^oldpage$ http://www.mysite.co.uk/newsubdir/newpage? [R=301,L]
Run Code Online (Sandbox Code Playgroud)