2010-08-02 51 views
1

我有一組重寫規則,應該處理一個URL,該URL有1到5個參數。因此,我的網址可能如下所示: www.site.com/topic1/page1或www.site.com/topic1/sub1/page1。htaccess URL重寫規則的問題,查詢字符串被追加到結果URL

這裏是我的規則,在這個例子中:

RewriteRule ^([^/.]+)/?$ /staticpages/process-selection.php?param1=$1 [E=rwdone:yes,L] 
RewriteRule ^([^/.]+)/([^/.]+)/?$ /staticpages/process-selection.php?param1=$1&param2=$2 [E=rwdone:yes,L] 
RewriteRule ^([^/.]+)/([^/.]+)/([^/]+)/?$ /staticpages/process-selection.php?param1=$1&param2=$2&param3=$3 [E=rwdone:yes,L] 
RewriteRule ^([^/.]+)/([^/.]+)/([^/]+)/([^/]+)/?$ /staticpages/process-selection.php?param1=$1&param2=$2&param3=$3&param4=$4 [E=rwdone:yes,L] 
RewriteRule ^([^/.]+)/([^/.]+)/([^/]+)/([^/]+)/([^/]+)/?$ /staticpages/process-selection.php?param1=$1&param2=$2&param3=$3&param4=$4&param5=$5 [E=rwdone:yes,L] 

更復雜的是,我可能有一個從舊的URL重定向到301新的網址之一。所以「/ topic1/page1/oldpage」可能會首先被重定向到「/ topic1/page1/newpage」。

出於某種原因,當重寫發生時,在瀏覽器中顯示的網址具有正確的URL,但與附加到這樣的URL老變量: /TOPIC1 /第1頁/ NEWPAGE參數1 = 1頁& param2 = oldpage

我想知道是否有任何方法可以避免這種情況。我在這裏做錯了什麼。

回答

0

mod_alias工作以後再mod_rewrite[L]標誌有效期只有mod_rewrite規則,不mod_alias(即這些規則仍然適用於原始URL,但顯然與新的查詢字符串很奇怪)。要啓用mod_alias以查看已重寫的網址,請使用[PT]標誌,或者嘗試使用mod_rewrite進行所有重寫/重定向。

+0

非常感謝您的意見。我能夠通過將我的重定向301代碼更改爲RewriteRule^url [R = 301,L]來解決問題。最後沒有看到奇怪的參數附加到我的瀏覽器網址。 – Waylien 2010-08-12 04:14:17