我在htaccess中重定向301和rewriterule的问题很少 .
我有几千个带有新链接的子页面,必须重新定向,但我可以用10-20个重写来管理它 . 但并非所有事情都应该如此......
基本的rewriterule工作正常,例如:
RewriteRule ^subpage-([0-9]+)*\.html$ subpage.php?p=$1 [L]
它让我从subpage-1.html到subpage.php?p = 1(这里不需要301,这只是一个例子,rewriterule做了它的工作) .
具有301重定向的简单重写也可以正常工作:
RewriteRule ^subfolder/subpage.php$ /subpage.html [L,R=301]
通过我不知道为什么我必须在“new-subpage”之前加上“/” . 如果我不这样做,我将被重定向到“domain / whole-ftp-path / new-subpage.html”而不是“domain / new-subpage.html” . 这只是重定向301的事情吗?
主要事件:
RewriteRule ^subfolder/subpage.php?p=([0-9]+)$ /subpage-$1.html [L,R=301]
这没有任何作用,我得到域/子文件夹/ subpage.php?p = 1 404(旧的子页面不再存在于同一位置) .
我做错了什么?
2 回答
与查询字符串有关 . 如果您只有一个子文件夹,可以试试这个:
有了更多子文件夹,您可以尝试:
您无法在
RewriteRule
中匹配QUERY_STRING
.用这个替换你的
.htaccess
: