投稿 评论 顶部

Thinkphp3.2 伪静态以及thinphp3.2去掉index.php方法

佚名 网络安全

?? 一般在thinkphp开发的项目中我们都需要隐藏到入口文件,那么具体需要怎么做呢。这里简单说一下。


?? 一, 这里我们是一apache为例。打开httpd.config,找到modules/mod_rewrite.so这一行。把前面的#去掉。这里顺便提一下关于Rewrite这模块其实是主要的功能就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范。平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等功能,只有开启加载这个配置才能实现伪静态以及隐藏入口文件的作用。

?? 二, 还是在httpd.config中搜索AllowOverride none,AllowOverride none改为AllowOverride all。这里顺便提一嘴AllowOverride none的意思是.htaccess 文件将被完全忽略。当此指令设置为 All 时,所有具有 “.htaccess” 作用域的指令都允许出现在 .htaccess 文件中。

?? 三,在项目的配置文件中'URL_MODEL'=>'2',这个可以根据项目需求选择放在公共配置文件中还是单一模块的项目中。

?? 四,修改或者新建一个.htaccess的文件里面写入

<IfModule mod_rewrite.c>     RewriteEngine on     RewriteCond %{REQUEST_FILENAME} !-d     RewriteCond %{REQUEST_FILENAME} !-f     RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]    </IfModule>
然后保存 重启运行环境就可以看到隐藏了index.php。而伪静态化 基本也是完成的 但是这里提一嘴,很多实用thinkphp框架的使用者可能有个毛病 就是在模板中U方法的使用,比如给test方法传值id=1 有可能在模板文件中这么写
{:U('test')}?id=1

这么写的确可以将值传入,但是反应在浏览器上就会使www.xxxx.com/Index/text.html?id=1,那么就算是按照以上的方法设置伪静态也没有用,因为thinkphp不会将其转化为你在框架中设置的那种。所以要注意的是在模板中传值尽量使用tp手册所写的方法,刚才的传值应该为
{:U('test',array('id'=>1))}






??