今天使用第三方应用程序搭建了一个系统,该应用程序基于ThinkPHP框架开发,搭建完后,在设置伪静态时,输出的URL中一直含有index.php,几经较大周折,终于找出比较好的解决方案。

由于对ThinkPHP完全不懂,只能通过相关网站寻找解决方案,得到的结果是,网上绝大部分跟官方文档相似或者完全相同,即

  1. httpd.conf配置文件中加载mod_rewrite.so模块;
  2. AllowOverride None 将None改为 All;
  3. 确保应用程序中配置文件(通常为Common\Conf\config.php)的URL_MODEL设置为2,即'URL_MODEL'=>2;;
  4. 配置.htaccess文件,并放到入口文件的同级目录下,其配置为:
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

因网站用的是虚拟主机,无权对httpd.conf进行设置,联系商家技术支持设置,技术人员以伪静态可以通过配置.htaccess实现为由拒绝,无果。最后因上述1、2点导致index.php仍然不能去除。如下图示:

thinkphp_url_rewrite.jpg

无奈之下,找到官方论坛,根据论坛各网友提供的方案一一尝试,终于找到能够替代1、2点的方法,即

  1. 在入口文件(一般是index.php)添加 define('__APP__', '');;

综上,通过上述的3、4、5三项即可去掉ThinkPHP中含有的index.php。

空非易文章均为原创,转载请以链接形式注明本文地址

本文地址:http://pengzhiyong.com/archives/thinkphp_url_rewrite.html

作者:空非易 | 标签: , | 浏览:4584