【发布时间】:2010-08-02 16:03:22
【问题描述】:
我有一组重写规则,它们应该处理具有 1 到 5 个参数的 URL。所以我的 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 从旧 URL 重定向到这些新 URL 之一。所以“/topic1/page1/oldpage”可能首先被重定向到“/topic1/page1/newpage”。
由于某种原因,当重写发生时,浏览器中显示的 URL 具有正确的 URL,但旧变量附加到 url,如下所示: /topic1/page1/newpage?param1=page1¶m2=oldpage
我想知道是否有任何方法可以避免这种情况。我到底做错了什么。
【问题讨论】:
标签: apache .htaccess rewrite mod-rewrite