我有一组重写规则,它们应该处理一个包含1到5个参数的URL。所以我的网址可能如下所示: www.site.com/topic1/page1或www.site.com/topic1/sub1/page1。
以下是此示例中的规则:
RewriteRule ^([^/.]+)/?$ /staticpages/process-selection.php?param1=$1 [E=rwdone:yes,L]
RewriteRule ^([^/.]+)/([^/.]+)/?$ /staticpages/process-selection.php?param1=$1¶m2=$2 [E=rwdone:yes,L]
RewriteRule ^([^/.]+)/([^/.]+)/([^/]+)/?$ /staticpages/process-selection.php?param1=$1¶m2=$2¶m3=$3 [E=rwdone:yes,L]
RewriteRule ^([^/.]+)/([^/.]+)/([^/]+)/([^/]+)/?$ /staticpages/process-selection.php?param1=$1¶m2=$2¶m3=$3¶m4=$4 [E=rwdone:yes,L]
RewriteRule ^([^/.]+)/([^/.]+)/([^/]+)/([^/]+)/([^/]+)/?$ /staticpages/process-selection.php?param1=$1¶m2=$2¶m3=$3¶m4=$4¶m5=$5 [E=rwdone:yes,L]
要使问题复杂化,我可能会将旧网址重定向301到其中一个新网址。因此,“/ topic1 / page1 / oldpage”可能首先被重定向到“/ topic1 / page1 / newpage”。
出于某种原因,当重写发生时,浏览器中显示的URL具有正确的URL,但旧的变量附加到url,如下所示: / TOPIC1 /第1页/ NEWPAGE参数1 =第1页&安培; param2的= oldpage
我想知道是否有办法避免这种情况。我到底做错了什么。
答案 0 :(得分:0)
mod_alias
稍后使用mod_rewrite
,[L]
标志仅对mod_rewrite
规则有效,而不是mod_alias
(即这些规则仍会应用到原始的URL,但显然与新的查询字符串相当奇怪)。要使mod_alias
能够查看已经重写的网址,请使用[PT]
标记,或者尝试使用mod_rewrite
进行所有重写/重定向。