啟用MultiViews,客戶端輸入“http://localhost/demo…
問題:
在配置某個站點的.htaccess文件中的規則,如下:
RewriteRule ^member/([a-zA-Z0-9_]+)$ /member\.php?module=$1 [QSA,L]
瀏覽器中訪問一直獲取不到module的值,百思不得其解。
通過打印$_SERVER變量,發現$_SERVER['REQUEST_URI']的值是/member.php/test,這就比較奇怪了,member路徑成了文件。
解決:
既然$_SERVER有問題,就在Apache配置文件里面查找原因。
通過對比服務器正常配置文件,發現
<Directory "e:/www/demo/"> Options +FollowSymLinks +MultiViews AllowOverride All Require local </Directory>
多了+MultiViews(多重視圖),去掉即可。
比如:客戶端輸入“http://localhost/demo/test”這將會顯示此目錄下所有 test.* 文件,并不是出錯信息。
這也就是為什么我遇到的member路徑成了member.php文件,因為當前文件夾中確實有這個文件存在,系統自動找到了這個文件。
至此,問題解決!