2016-07-15 38 views
0

一個基本的URL重寫,我不明白爲什麼,但:當我用這個怎麼做的mod_rewrite

#RewriteRule ^/?r/(.*)$ /index.php?n=$1 [L] 

改寫mysite.com/r/somewhatmysite.com/index.php?r=somewhat 的現場工作。

但是,如果我用這個:

#RewriteRule ^/?(.*)$ /index.php?name=$1 [L] 

改寫mysite.com/somewhatmysite.com/index.php?r=somewhat, 我的網站停止工作。

我不明白爲什麼。有人可以幫助我嗎?

我怎麼能改寫mysite.com/somewhatmysite.com/index.php?r=somewhat

+3

如果你想'R = somewhat',那麼你爲什麼要重寫'N = $ 1'??? 'n'與'r'不一樣。 –

回答

1

你的第二個規則將導致無限循環,因爲目標URI /index.php?r=somewhat也匹配.*。最終它會導致500個內部服務器錯誤。

要解決,你需要避免使用RewriteCond這樣重寫文件和目錄:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^/?(.+)$ /index.php?r=$1 [L,QSA]