问题:
在配置某个站点的.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文件,因为当前文件夹中确实有这个文件存在,系统自动找到了这个文件。
至此,问题解决!