在我的网站上,用户可以添加各种需要重定向的 URL。
例如;来自:domain.com/oldpage/36/
对此:domain.com/newpage/47/
它们像这样添加到 .htaccess 中:
Redirect 301 /oldpage/36/ /new-page/47/
但是当访问旧页面时,他们得到这个:
domain.com/newpage/47/?pid=36&pagename=oldpage
我很确定这些重写规则导致了这种困境:
RewriteRule ([^.]+)/([0-9]+)/$ index.php?pid=$2&pagename=$1
RewriteRule ([^.]+)/([0-9]+)/([^.]+) index.php?pid=$2&pagename=$1&vars=$3
但是,mod_rewrite 的东西不是我的强项,所以我不知道如何修复它。
有什么想法吗?
最佳答案
添加 ?
使得 Rewrite
不会将查询字符串添加到 url。
所以这应该有效:
Redirect 301 /oldpage/36/ /new-page/47/?
作为预防措施,您还可以将其添加到以下内容的末尾:
RewriteRule ([^.]+)/([0-9]+)/$ index.php?pid=$2&pagename=$1?
RewriteRule ([^.]+)/([0-9]+)/([^.]+) index.php?pid=$2&pagename=$1&vars=$3?
但只有在需要的时候
关于php - 重定向 301/重写难题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6385416/