问题: thinkphp 框架,除了IndexAction.class.php 里面的index 方法可以访问(站点的默认首页),再去访问Index控制器其他方法的时候就访问不了.....
win7 安装的集成环境wamp
开启apache的路由重写,网上资料很多,这里随便找个就不说明了http://cxc359170248.blog.163.com/blog/static/11540731320112246113181/
.htaccess配置文件,去掉index.php
# Helicon ISAPI_Rewrite configuration file
# Version 3.1.0.104
#RewriteEngine on
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteRule ^(.*)$ index.php/$1 [QSA,R,L]
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
这个是我之前apache的配置
<VirtualHost *:80>
DocumentRoot "E:\Wamp\wamp\client
ServerName web.com
<Directory "E:\Wamp\wamp\client>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
之前在别的机子就是这样配置的没有异常,换了一台机器就这样,第一反应以为apache 的路由没有启动,就访问了别的控制器的方法,测试没有问题,
通过打印
print_r(C('DEFAULT_GROUP') . '-' . GROUP_NAME . '-' . MODULE_NAME . '-' . ACTION_NAME);
发现Index控制器除了的index方法正常,其他方法访问的结果异常 方法名字= MODULE_NAME, ACTION_NAME默认都是index
原因是apache的配置问题使得$_SERVER['PATH_INFO']服务器变量的值产生变化,<pre name="code" class="html">就只这句Options Indexes FollowSymLinks MultiViews,注释掉就OK了...
参考文章 : Apache Options Indexes FollowSymLinks详解