2010-08-14 76 views
1

我試圖在mod-rewrite中傳遞一個URL作爲參數。我想我的正則表達式存在一個問題。這是我的.htaccess:在mod-rewrite中傳遞和URL作爲參數

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteRule **^go/((http:\/\/)+[A-Za-z0-9\-]+[\.A-Za-z])/?$** feedmini.php?url=$1 [L] 
</IfModule> 

我要傳遞的URL看起來像http://www.aaaa.com/aaa/?q=v但是當過我嘗試達到它去/ http://www.aaaa.com/aaa/?q=v我收到一個404錯誤頁面。我也嘗試過**^go/([A-Za-z0-9\-\/:]+[\.A-Za-z]+)/?$**,但是我通過的URL是這樣的:http:/www.aaaa.com/aaa/(在'http:'後面觀察singel'/');

任何想法?

在此先感謝 /ALE

+0

你的意思是你的網址,比如'http://example.com/go/http://stackoverflow.com/ '? – 2010-08-14 09:40:09

+0

你好! 是的,這正是我想要完成的,但我還沒有得到任何積極的結果。 – Alecoletti 2010-08-14 12:19:23

回答

1

嗯,你的第一個問題(在你的第一個代碼塊)是你的正則表達式模式不匹配一個URL,因爲它只會匹配以http:開頭的字符串://然後只包含字母或破折號,以單個完整字母或字母結尾。也許這只是一個錯字,應該有一個量詞,但即使如此,它也無法匹配很大比例或URL。

這似乎有些奇怪,但試試這個...

RewriteRule ^go/http:/(.*)/?$ feedmini.php?url=http://$1 [R=302,L] 
+0

請注意,最後的'/?'永遠不會匹配,因爲'。*'會貪婪地抓取尾部的斜線(如果有的話)(這很好)。另外,+1,因爲這是正確的答案。在傳遞給'RewriteRule'測試模式之前,任何數量的斜槓都會壓縮成單斜槓。 – 2010-08-14 19:41:36

+0

好點蒂姆,我想我只是習慣於寫作/?在我的模式:) – 2010-08-15 12:39:06

+0

嗨,感謝您的幫助!它的工作現在完美。我想我應該更多地瞭解正則表達式;) – Alecoletti 2010-08-15 23:54:35