Thinkphp在iis6下使用伪静态出现问题,求解
:(
无法加载控制器:Index.php?s=
错误位置
FILE: D:\ThinkPHP\Library\Think\App.class.php LINE: 91
TRACE
#0 D:\ThinkPHP\Library\Think\App.class.php(91): E('???????????????...')
#1 D:\ThinkPHP\Library\Think\App.class.php(181): Think\App::exec()
#2 D:\ThinkPHP\Library\Think\Think.class.php(117): Think\App::run()
#3 D:\ThinkPHP\ThinkPHP.php(93): Think\Think::start()
#4 D:\index.php(17): require('D:\yaodamai\Thi...')
#5 {main}
config.php
'SHOW_PAGE_TRACE' => false, //显示页面调试信息
'DB_PORT' => 3306, // 端口
'DEFAULT_MODULE' => 'Home', //默认模块
'DEFAULT_CONTROLLER' => 'Index', //默认控制器
'DEFAULT_ACTION' => 'index', // 默认操作名称
'MODULE_ALLOW_LIST' => array('Home', 'Admin'),
'URL_MODEL' => '2', //URL模式
'URL_CASE_INSENSITIVE' => false, // 默认false 表示URL区分大小写 true则表示不区分大小写
'URL_HTML_SUFFIX' => 'html', // URL伪静态后缀设置
httpd.ini
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
RewriteRule (.*)$ /index\.php\?s=$1 [I]
经过验证这个httpd.ini是正常的不然也就无法解析到index.php?s=了
来过这世界
10 years, 6 months ago
Answers
thinkphp程序一般默认运行在linux下的apache服务器里,伪静态默认的的官方就支持,但如果运行那个在iis下,那默认的就不支持伪静态了。
因此,需要编写iis下的伪静态规则才可以,在使用规则之前,服务器必须安装伪静态组件的,至于怎么安装这里就不说了。虚拟主机用户可以咨询空间开发商服务器中是否安装了伪静态组件,如果有安装了。虚拟主机用户就不用去操心安装问题,直接伪静态规则保存为httpd.ini上传到程序站点目录就可以!
以下是规则内容:
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteRule (?!\/不进行静态化的目录1)(?!\/不进行静态化的目录2)(.*)$ /index\.php/$1 [I]
这样简单的介绍一下,有一些目录比如放js,css,图片或者附件或者管理员目录等等不需要进行静态化,可以再上面不进行静态的目录中添加。如果没有添加,默认的RewriteRule (.*)$ /index.php/$1 [I] 就会造成所有的文件都被静态化,结果就会造成css和js,图片等被静态了,会造成版面看起来很乱的现象!
Arron
answered 10 years, 2 months ago