2011-03-25 91 views
1

我試圖簡單地將domain.net/abc作爲/ s2傳遞給Rails應用程序?alt_url = abc我不想讓URL似乎在瀏覽器中發生了變化。我現在一直在這個圈子裏進行很長時間。我可以讓重寫工作(應用程序運行正常),但URL總是在瀏覽器中換出。mod_rewrite顯示URL的變化,雖然我看不出爲什麼

RewriteEngine On 
RewriteRule ^/([a-zA-Z0-9_-]+)$ /s2?alt_url=domain.net\%2F$1 [PT] 

如果我不使用[PT],那麼我的最終規則無法正確傳遞給Rails應用程序。我正在運行乘客,根據http://code.google.com/p/phusion-passenger/issues/detail?id=230的討論,我必須使用[PT]並小心不要做其他任何瘋狂的事情。所以我不確定爲什麼通過選項強制外部重定向,但它似乎是必要的。

有沒有人知道我如何避免更改URL而不更改Rails應用程序?

任何幫助將不勝感激。 菲爾

回答

0

你顯然會得到一個外部重定向(HTTP 302或類似的),你強制與[R]。我認爲你應該簡單地刪除[R]。

More about the R flag

更新Ẁhen我想到了,改變域名(在這種情況下改爲http://domain.net/home)始終是外部重定向。

我建議爲更改域名和處理最終域名上的各種路徑分開規則。

+0

[R]在那裏爲了純粹的http://domain.net/請求重定向,而沒有請求特定的頁面。但是你確實讓我懷疑這是否與其他東西沒有很好的搭配。不是那樣。謝謝,不過。 – Phil 2011-03-27 17:52:23

0

不熟悉rails,但是這個例子可以幫助你。這個重寫規則在/ ie後面會有任何東西(字母數字,_和 - )。 site.com/value

RewriteRule ^([a-zA-Z0-9_-]+)$ /file.php?variable=$1 

其中^([A-ZA-Z0-9 _-] +)$是一些正則表達式我常帶在URL後任何東西,並把它$ 1

這將離開你的網站作爲site.com/value

編輯:我如何使用這個的一個例子:grwl.it/kirbdee,它留下的網址,但潛在地調用一個PHP作爲變量傳遞kirbdee。

+0

柯比,這是一個更清潔的規則。感謝那。它只有當我添加[PT]時才起作用。由於我使用Passenger來運行我的應用程序,因此似乎有一些方法與mod_rewrite無法很好地協作。您的清潔規則幫助我排除了配置,並幫助我在Google上尋找新答案。謝謝。 – Phil 2011-03-27 17:50:54

相關問題