2013-04-08 148 views
0

我想有掌握的mod_rewrite 500由於無限重定向

http://test.domain.net/2a

到被處理爲

http://test.domain.net/?i=2a

由於無限重定向,我收到了500錯誤。我的規則在哪裏出錯?

RewriteEngine On 
RewriteRule ^([^/]*)$ /?i=$1 
+1

可以防止與適當的'RewriteCond'的無限循環。例如,請參閱http://stackoverflow.com/a/15843806/1741542。 – 2013-04-08 08:08:58

回答

1

嘗試:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)$ /?i=$1 [L] 
+0

爲什麼這個工作正好? +1 – rtheunissen 2013-04-08 13:12:57

+1

@ paranoid-android你之前遇到的問題是你的規則正在循環。 Mod_rewrite將繼續遍歷所有規則,直到URI停止更改。由於您的規則('/',不包括查詢字符串)的目標匹配模式'^([^ /] *)$',它將繼續應用。這兩個條件只是檢查URI是否映射到現有文件或目錄,然後根本不應用規則。 – 2013-04-08 17:07:38