2012-04-27 35 views
0

當我使用重寫規則在.htaccess中似乎發生了內部服務器錯誤的.htaccess錯誤

我的.htaccess代碼如下:

Options +FollowSymlinks 
RewriteEngine on 
RewriteRule ^(.*)\.$ $1.php [nc] 
RewriteRule ^([a-z][a-zA-Z0-9_-]+)\.htm$ inner.php?url=$1 

,但我得到的服務器錯誤。該錯誤消息如下:

內部服務器錯誤

服務器遇到一個內部錯誤或配置錯誤,無法完成您的請求。

請與服務器管理員admin @ localhost聯繫,並告知他們錯誤發生的時間以及您可能已經造成錯誤的任何事情。

有關此錯誤的更多信息可能在服務器錯誤日誌中可用。

+0

你有什麼網址? – candyleung 2012-04-27 07:26:50

+0

就像頁面所說的那樣,查看服務器錯誤日誌以獲取詳細信息。我的第一個猜測是你的服務器管理員已經禁用了「Options + FollowSymlinks」。 – duskwuff 2012-05-25 16:55:40

回答

0
RewriteRule ^(.*).$ $1.php [nc] 
RewriteRule ^([a-z][a-zA-Z0-9_-]+).htm$ inner.php?url=$1 

能否請你解釋一下,你的目標是實現與第一條規則是什麼?

現在它會重寫任何文件,以一個名爲相同的(除了最後一個字符),並擴展了「.PHP」:

ABCDEFG變得abcdef.php <是你想要的嗎?

真正的問題是,這種情況一遍又一遍地發生: 第一次重寫htaccess被第二次調用並且規則再次適用,因爲沒有限制重寫的條件。

試試這個:

RewriteCond %{REQUEST_URI} !\.php$ # if the uri does not end with ".php" 
RewriteRule ^(.*).$ $1.php [nc,L]  # do not apply another rule after this 

RewriteRule ^([a-z][a-zA-Z0-9_-]+).htm$ inner.php?url=$1 

問候, STEFAN