2009-05-06 25 views
3

使用新的Diggbar,您可以將http://digg.com放在您當前所在的任何網址的前面,它將創建一個Digg短網址。我只是假設他們通過modrewrite這樣做(儘管我不確定,因爲我是新手)。Diggbar modrewrite-它們如何通過modrewrite傳遞URL?

這是如何完成的?在我看來,當我嘗試使用我正在處理的網站時,它會爆炸。

我希望能夠做到以下幾點:

http://example.com/http://stackoverflow.com/question/ask 

,並有modrewrite,讓這個去

http://example.com/index.php?url=http://stackoverflow.com/question/ask 

但是,當我使用這個modrewrite:

RewriteEngine on 
RewriteRule ^([A-Za-z0-9]+)$ /message.php?id=$1 [L] 

它不起作用。我究竟做錯了什麼?

回答

5

您必須從request line中獲取值,因爲Apache會刪除空路徑段。最初請求的URI路徑/http://foobar/變爲/http:/foobar/。但請求線(THE_REQUEST)保持不變:

RewriteCond %{THE_REQUEST} ^GET\ /(https?://[^\s]+) 
RewriteRule ^https?:/ index.php?url=%1 [L] 
1

你只在那個正則表達式中尋找字母和數字,所以它不會拿起冒號和斜線。您還使用在htaccess的例子和message.php的index.php)

你可能想是這樣的:

RewriteEngine on 
RewriteRule ^http://(.+)$ /index.php?url=$1 [L] 

這可以確保你只能望塵莫及的網址在這裏,和你仍然可以有正規的頁面! (想想如果您訪問example.com/index.php會發生什麼情況,最終會陷入無限循環)。

+1

你可能要考慮到HTTPS – 2009-05-06 20:00:52

+0

非常好。我從不擅長重新閱讀我的帖子,如index.php而不是messages.php。至於考慮到https://和http://,我需要採取哪些措施? – JoshFinnie 2009-05-06 21:05:50