2013-04-25 32 views
1

爲什麼下面的Apache配置產生一個內部服務器錯誤:Apache網址重寫啓動內部服務器錯誤

# Turn on the rewriting engine 
RewriteEngine On 

# Redirect "page/" and "page" to "page.php" . Also, redirect "page/en/" and "page/en" to "page.php?lang=en" . 
RewriteRule ^(.+)/?([a-z]?)/?$ $1.php?lang=$2 [QSA,NC,L] 

所以,基本上,所有我想要做的就是添加「.PHP」到年底該頁面,如果存在「/ en」部分,則將其添加爲語言參數。

回答

0

原因,爲什麼你的規則是失敗的:你重寫規則導致無限循環和Apache拋出內部服務器錯誤(500),因爲Request exceeded the limit of 10 internal redirects(默認)。

這裏是你應該怎麼寫重寫規則此任務:「未找到對象」

RewriteEngine On 
RewriteBase /MySite/ 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.*?)(?:/(.*?)/?)?$ $1.php?lang=$2 [L,NC,QSA] 
+0

非常感謝,但我只是嘗試這樣做,我得到當我嘗試所有這些網址時:http://127.0.0.1/MySite/about/en/,http://127.0.0.1/MySite/about/en,http://127.0.0.1/MySite/about/和http ://127.0.0.1/MySite/about。我應該在http://127.0.0.1/MySite/about.php獲取該文件。注意 - .htaccess文件位於MySite目錄中。 – 2013-04-25 21:23:06

+0

啊你沒有提到你的問題中的MySite。我現在將編輯我的答案。 – anubhava 2013-04-25 21:30:58

+0

好吧,現在就試試吧。 – anubhava 2013-04-25 21:35:09