2010-07-03 71 views
1

我最近發現了mod重寫,我想知道是否有可能 重寫包含出站url的變量。Mod重寫變量包含一個帶有特殊字符的網址

到目前爲止它根本不工作。我認爲這是由於變量中的特殊字符引起的,我不知道如何解決這個問題。到目前爲止

我的.htaccess代碼:

Options +FollowSymLinks 
RewriteEngine On 
RewriteRule ^url/(\w+)/?$ link.php?url=$1 [L] 

我想改寫:

http://www.example-site.com/url/http://www.affiliate-site.com/dir/index.php?page=home 

要:

http://www.example-site.com/link.php?url=http://www.affiliate-site.com/dir/index.php?page=home 

任何幫助將非常感激。

在此先感謝。

回答

0

\w僅包括AZ,az和0-9

這應該做的伎倆:

RewriteRule ^url/(.+)/?$ /link.php?url=$1 [L] 

這種小抄可以幫助:
http://regexlib.com/CheatSheet.aspx

+1

喜嘉, 謝謝,確實有效。 但是,我遇到了另一個問題,當我輸入「http://www.affiliate-site.com」,並在我的PHP文件中回顯GET變量時,它變成「http:/www.affiliate-site。 COM」。請注意,雙斜槓輸出爲單斜槓。 而當url包含查詢「?」時,它會切斷url中的查詢。 因此「http://www.affiliate-site.com/dir/index.php?page=home」變成了「http:/www.affiliate-site.com/dir/index.php」。 任何想法爲什麼發生這種情況?我該如何解決它? 最好的問候 – 2010-07-03 22:38:40

+0

至於去除雙//,你是否在URL上使用'stripslashes()'?至於查詢字符串,是的,它認爲什麼後?是一個查詢字符串。爲了解決這個問題,我會讀入並替換'$ _SERVER ['REQUEST_URI']'中的當前URL。這可以讓你只是你正在尋找的網址,然後使用http://www.php.net/manual/en/function.parse-str.php來獲得你需要的變量。 – 2010-07-03 22:54:50