ThinkPHP隐藏Url的index.php_ThinkPHP重写规则
相信大家平时在使用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=这种丑陋的形式??
推荐阅读
-
浅析ThinkPHP中的pathinfo模式和URL重写
-
浅谈ThinkPHP的URL重写
-
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
-
thinkphp的URL路由规则与配置实例
-
ThinkPHP的URL重写问题
-
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
-
ThinkPHP6.0 重写URL去掉Index.php的解决方法
-
thinkphp中U方法按路由规则生成url的方法
-
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
-
ThinkPHP3.2.3:使用模块映射隐藏后台真实访问地址(如:替换url里的admin字眼)