2011-08-05 18 views
0

我已經嘗試了這兩個mod_jk和mod_proxy並獲得相同的結果。apache2 tomcat6 mod_rewrite與漂亮的網址會丟失用戶會話信息 - 空的購物車

使用這個的mod_rewrite規則正常工作:

RewriteRule ^/(.*)\-blah.html$ /blah/blah/blah?blah=l2vb&party_name=$1 [R,L] 

這種麻煩的是醜陋的新URL /blah/blah/blah?blah=l2vb&party_name顯示在瀏覽器中,這是我希望避免的地址線。它似乎是這樣做的[R]標誌。

以下規則隱藏的醜陋的URL,只顯示新的漂亮的一個:

RewriteRule ^/(.*)\-blah.html$ /blah/blah/blah?blah=l2vb&party_name=$1 [P,L] 

注:這裏唯一的不同是在[]之間結束的標誌。

麻煩的是,如果用戶已經在他們的購物車中有東西,它會被清空。不知何故,他們的連接會話(或任何它 - 這裏是我的深度!)重新初始化,所以他們似乎從頭開始。

我試過其他幾種標誌組合,如[PT,L],[R,PT]等,迄今爲止還沒有運氣。

回答

0

[R]標誌表示302重定向代碼,它明顯改變瀏覽器中的URL。

我想你需要QSA標誌:

RewriteRule ^/(.*)\-blah.html$ /blah/blah/blah?blah=l2vb&party_name=$1 [QSA,L] 

QSA標誌將保留現有的查詢字符串(更準確地說,將其附加到新的URL)..就如同使用操作,否則會丟失請求參數。我認爲會話ID或什麼可能通過查詢字符串傳遞..當URL被重寫它丟失,所以服務器創建新的會話。如果是這種情況,那麼上述應該可以解決您的問題。

Apache文檔:http://httpd.apache.org/docs/current/rewrite/flags.html#flag_qsa