我有一個Zend Framework應用程序,在根目錄中有一個.htaccess
文件,將所有流量導向/public
目錄,其中index.php
所在的目錄。htaccess導致服務器錯誤500
這是.htaccess
的內容:
RewriteEngine On
RewriteRule ^\.htaccess$ - [F]
RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /public/index.php [NC,L]
RewriteCond %{REQUEST_URI} !^/(upload|img|js|css|less)/.*$
RewriteCond %{DOCUMENT_ROOT}/public/upload%{REQUEST_URI} -f
RewriteRule ^(.+\.(jpg|png|mp3))$ /public/upload%{REQUEST_URI} [NC,L]
;RewriteCond %{REQUEST_URI} !^/public/.*$
;RewriteRule ^(.*)$ /public/$1
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]
RewriteRule ^public/.*$ /public/index.php [NC,L]
正如你可以看到,有兩個註釋掉線。
該部分,據說是指導流量到/public
,並在我的本地服務器和我的共享主機上工作,似乎在我的客戶端的服務器上慘敗。
因此,在兩行註釋掉的時候,當我在瀏覽器中鍵入網站的地址時,我得到一個目錄列表。當我將/public
附加到地址時,我按照預期將其帶到/public/index.php
,但由於請求沒有正確重定向,所以對JS和CSS文件也沒有。
當我取消註釋行時,出現500內部服務器錯誤(index.php
根本沒有達到)。
其他重寫正確工作(至少據我所知)。
任何想法爲什麼會發生這種情況,以及如何糾正?
在此先感謝。
據我所知,「#」是配置(或.htaccess)文件中唯一允許的註釋字符,因此您的兩條「註釋」行實際上不是。 從[Apache Server 2.x文檔](http://httpd.apache.org/docs/2.0/configuring。html): '以散列字符「#」開頭的行被視爲註釋,並被忽略。註釋可能未包含在配置指令後面的行中。# –
感謝您的評論。我實際上已經刪除了「在我的.htaccess中註釋掉了的行,並且只留下了這裏作爲關於刪除內容的參考,儘管我不知道這個分號是無效的註釋字符;) – mingos