2010-06-17 69 views
2

我有以下問題:我使用保存引用URL的腳本。我想要這個URL到我自己的URL之一。假設用戶訪問頁面http://example.com/page1我想將該URL重寫爲http://example.com/page2,並確保該頁面上的引用者安全。如何在rewrite規則上設置referer?

我不想用PHP腳本來做到這一點,否則每次我想跟蹤一個新的引用者時,我都必須擴展該腳本。我已經嘗試了這些重寫規則:

RewriteRule ^page1$ /page2 [R=301,QSA,NC] 
RewriteRule ^page1$ /page2 [L,R=301,QSA,NC] 

重寫工作,但請求參數引用程序丟失。我是否必須使用301以外的其他stauts代碼,或者在我的重寫中是否有其他錯誤。甚至可以在rewrite規則中設置referer?

+0

如果網址保持重定向後相同,但它時並不需要這將是很好。 – 2ndkauboy 2010-06-17 15:52:06

+0

我認爲你的意思是引用標題?如果是這樣,我不認爲你可以mod_rewrite發出一個外部重定向到瀏覽器。你引用的引用是否總是說page1? – 2010-06-17 17:05:37

+0

我確實是指HTTP_REFERER。我根本沒有在URL中使用page1。只有在URL中使用page2我才能得到正確的引用者。 – 2ndkauboy 2010-06-17 17:18:53

回答

1

使用R標誌會導致外部重定向。如果你只是想一個內部重寫,省略[R標誌:

RewriteRule ^page1$ /page2 [QSA,NC] 
+0

但是,這不會設置HTTP_REFERER或我錯了嗎?我希望page1作爲HTTP_REFERER的值出現在page2上。這甚至可以用重寫規則嗎? – 2ndkauboy 2010-07-01 10:08:42

+0

@ Kau-Boy:做內部重寫不會改變HTTP請求。該請求只是在內部重寫到另一個URI。 – Gumbo 2010-07-01 10:42:33

+0

因此,簡而言之,沒有一個PHP腳本在中間做一個頭重定向來改變/設置HTTP_REFERER是不可能的?當我必須這樣做的時候,沒關係。只是想知道它是否適用於重寫規則。 (如果你添加了「不適合你的答案,我會接受它) – 2ndkauboy 2010-07-01 16:10:12