2017-05-29 44 views
1

http://www.generateit.net/mod-rewrite/index.php的.htaccess規則500內部服務器錯誤

我做了改寫

www.example.com/index.php?p=page 

www.example.com/page 

由於某種原因,這給了500內部服務器錯誤,不管我請訪問:

  • www.example.com

  • www.example.com/page

  • www.example.com/index.php?p=page

規則:

RewriteEngine On 
RewriteRule ^([^/]*)$ /index.php?p=$1 [L] 
+0

檢查您的服務器的錯誤日誌。錯誤的原因將在那裏。您很可能會忽略所需的覆蓋(即'FileInfo')以使用'mod_rewrite'指令(或'mod_rewrite'實際上未啓用) – Phil

回答

-1

需要添加一個/如此:

RewriteEngine On 
RewriteRule ^/([^/]*)$ /index.php?p=$1 [L] 
+1

在'.htaccess'中,將斜線添加到'RewriteRule'的開頭_pattern_不會「修復」問題,它只是讓錯誤消失 - 因爲現在它不會做任何事情。 – MrWhite

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

這將導致重寫循環(因此你的500錯誤)。防止重寫循環的一種方法是在嘗試重寫之前檢查該URL是否已經包含一個p URL參數。例如:

RewriteCond %{QUERY_STRING} !^p= 
RewriteRule ^([^/]*)$ /index.php?p=$1 [L] 
+0

這是如何創建一個循環? 'L'標誌應該防止發生這種情況。 – Phil

+0

在'.htaccess'中,'L'標誌停止當前一輪處理。該過程重新開始並繼續,直到URL通過不變。 – MrWhite

+0

但是這是一個內部重寫。沒有提出另一個請求。我認爲你需要測試你的假設 – Phil