apache的MultiViews的问题,apachemultiviews
apache的MultiViews的问题,apachemultiviews
问题:
前提:ThinkPHP框架
今天配置服务器访问路径如下:
http://**.com/index/index
发现最后得到的$_SERVER的[PATH_INFO]的值只有/index
这样其实就是默认访问了index控制器,而并没有直接访问到index方法
也就是当url改为:
http://**.com/index/find
的时候的$_SERVER的[PATH_INFO]的值只有/find
这样其实就是访问了find控制器,而并没有直接访问到index控制器的find方法
以上问题所在。
解决
查找了半天觉得肯定是$_SERVER的问题,也就是服务器apache的配置问题,所以进一步查询了一下发现,apache的MultiViews选项的作用如下:
MultiViews的作用是当访问到目录中不存在的对象时,
如访问"http://localhost/test/target",
则apache会寻找该目录下的所有target.*文件.
如果test目录下存在target.jpg文件,
则会把这个文件返回给客户,
而不是返回出错信息.
再分析一下我们现在面对的实例.由于MultiViews的特性,
当访问“http://servername/Index/index”时.
由于根目录下存在index.php文件
所以上面的访问会变成这样:
"http://servername/Index.php/index"
所以会出现访问不到想要的方法的问题。也就是想要访问到就把配置文件中的:
<Directory "/www/demo">
Options +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
的+MultiViews去掉
评论暂时关闭