欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

ThinkPHP隐藏Url的index.php_ThinkPHP重写规则

程序员文章站 2021-11-28 11:22:26
...

相信大家平时在使用ThinkPHP的时候肯定会觉得index.php包含在url里面很不爽、今天就跟大家讲解一下怎么隐藏index.php、想要达成的效果很简单、就是在url里面去掉index.php、我有两个模块、Home、Wechat


http://localhost/index.php/home/index/index 缩短为: http://localhost/index/index 

http://localhost/index.php/wechat/index/index 缩短为: http://localhost/wechat/index/index


隐藏index.php、这个比较简单、我开启.htaccess的支持就行、具体配置自行百度吧、我用的是apache2、建立一个软连接就成

ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load


重启服务、然后、什么都不用做、index.php就被隐藏了

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>


这就是ThinkPHP默认的.htaccess文件内容、可以看到、index.php已经可以被省略了、然后就是home的隐藏、如果我们直接在.htaccess文件中写上home、那么、其他的模块我们就无法访问了、就只有使用thinkphp提供的机制了

这里说法就很多了、但我发现、大多都直说了一部分、都没人说完整的、我的做法是这样的

在Common/Conf/config.php中加入配置

´DEFAULT_MODULE´ => ´Home´,
´MODULE_ALLOW_LIST´ => array(´Home´,´Wechat´)


其中‘MODULE_ALLOW_LIST’的值是你所有允许访问的模块名、只有写在这里面的模块才能被访问、  最后、很多人说的在index.php中加入

define(´BIND_MODULE´,´Home´);


不建议这样这、这样的配置、你的项目就只有Home模块能被访问了、如果有多个模块呢???难道使用?m=&c=&a=这种丑陋的形式??