ThinkPHP框架里隐藏index.php


Posted in PHP onApril 12, 2016

本文所写的配置在ThinkPHP3.2.2上测试过。按理也兼容其它版本。

首先修改配置文件:

'URL_CASE_INSENSITIVE' => true, // 默认false 表示URL区分大小写 true则表示不区分大小写
'URL_MODEL' => 2, // URL访问模式,可选参数0、1、2、3,代表以下四种模式:
// 0 (普通模式); 1 (PATHINFO 模式); 2 (REWRITE 模式); 3 (兼容模式) 默认为PATHINFO 模式

Nginx

推荐:

location / {
try_files $uri $uri/ /index.php?s=$uri&$args;
}

意思是:如果第一个$uri不存在,就访问$uri/;如果$uri/还不存在,访问/index.php?s=$uri&$args。可以后面跟很多个。

try_files 
语法: try_files file1 [file2 ... filen] fallback 
默认值: 无 
作用域: location

再例如:

try_files $uri = 404

什么意思呢?uri不能成功访问,那好,那就给你个404吧。

但是在网上找到的文章大部分是这样配置的:

location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?/$1 last;
break;
}
}

实际上不可行。

Apache

在根目录新建.htaccess文件:

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

IIS环境

如果你的服务器环境支持ISAPI_Rewrite的话,可以配置httpd.ini文件,添加下面的内容:
RewriteRule (.*)$ /index\.php\?s=$1 [I]

在IIS的高版本下面可以配置web.Config,在中间添加rewrite节点:

<rewrite>
<rules>
<rule name="OrgPage" stopProcessing="true">
<match url="^(.*)$" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^(.*)$" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}” matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php/{R:1}" />
</rule>
</rules>
</rewrite>

附录

Nginx完整配置文

test.com.conf
server
{
listen 80;
server_name test.com;
index index.php index.html;
root /wwwroot/test.com/;
# unless the request is for a valid file (image, js, css, etc.), send to bootstrap
location / {
try_files $uri $uri/ /index.php?s=$uri&$args;
}
location ~ \.php
{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
set $path_info "";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
}
location /status {
stub_status on;
access_log off;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 24h;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
if ( $fastcgi_script_name ~ \..*\/.*php ) {
return 403;
}
access_log logs/test.com_access.log main;
error_log logs/test.com_error.log notice;
}
PHP 相关文章推荐
对javascript和select部件的结合运用
Oct 09 PHP
在PHP中使用模板的方法
May 24 PHP
windows环境下php配置memcache的具体操作步骤
Jun 09 PHP
深入PHP中的HashTable结构详解
Jun 13 PHP
国外十大最流行的PHP框架排名
Jul 04 PHP
md5 16位二进制与32位字符串相互转换示例
Dec 30 PHP
ThinkPHP快速入门实例教程之数据分页
Jul 01 PHP
php关键字仅替换一次的实现函数
Oct 29 PHP
PHP+Ajax验证码验证用户登录
Jul 20 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
Jul 28 PHP
php实现图片按比例截取的方法
Feb 06 PHP
PHP针对中英文混合字符串长度判断及截取方法示例
Mar 31 PHP
PHP 绘制网站登录首页图片验证码
Apr 12 #PHP
PHP中Restful api 错误提示返回值实现思路
Apr 12 #PHP
PHP给文字内容中的关键字进行套红处理
Apr 12 #PHP
PHP实现的通过参数生成MYSQL语句类完整实例
Apr 11 #PHP
PHP实现的浏览器检查类
Apr 11 #PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
Apr 11 #PHP
PHP模板引擎Smarty内建函数详解
Apr 11 #PHP
You might like
php 无限分类的树类代码
2009/12/03 PHP
超级好用的一个php上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
php+mysqli使用面向对象方式查询数据库实例
2015/01/29 PHP
Laravel+jQuery实现AJAX分页效果
2016/09/14 PHP
PHP排序算法之快速排序(Quick Sort)及其优化算法详解
2018/04/21 PHP
在Laravel 中实现是否关注的示例
2019/10/22 PHP
jquery 将disabled的元素置为enabled的三种方法
2009/07/25 Javascript
chrome下jq width()方法取值为0的解决方法
2014/05/26 Javascript
JS实现5秒钟自动封锁div层的方法
2015/02/20 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
2015/10/09 Javascript
实例详解Nodejs 保存 payload 发送过来的文件
2016/01/14 NodeJs
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
纯JS打造网页中checkbox和radio的美化效果
2016/10/13 Javascript
微信小游戏中three.js离屏画布的示例代码
2020/10/12 Javascript
vue实现图片裁剪后上传
2020/12/16 Vue.js
[00:59]DOTA2荣耀之路1:Doom is back!weapon X!
2018/05/22 DOTA
Python批量按比例缩小图片脚本分享
2015/05/21 Python
python实现按行切分文本文件的方法
2016/04/18 Python
python 生成器生成杨辉三角的方法(必看)
2017/04/10 Python
django加载本地html的方法
2018/05/27 Python
Python键盘输入转换为列表的实例
2018/06/23 Python
python线程中的同步问题及解决方法
2019/08/29 Python
python pygame实现挡板弹球游戏
2019/11/25 Python
opencv-python 提取sift特征并匹配的实例
2019/12/09 Python
Android Q之气泡弹窗的实现示例
2020/06/23 Python
Python实例教程之检索输出月份日历表
2020/12/16 Python
Html5上传图片 移动端、PC端通用代码
2016/06/08 HTML / CSS
什么是WEB控件?使用WEB控件有哪些优势?
2012/01/21 面试题
linux面试相关问题
2013/04/28 面试题
2014年平安建设工作总结
2014/11/19 职场文书
安全检查汇报材料
2014/12/26 职场文书
2015年扶贫帮困工作总结
2015/05/20 职场文书
青年文明号创建口号大全
2015/12/25 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
用Java实现简单计算器功能
2021/07/21 Java/Android
海贼王十大潜力果实,路飞仅排第十,第一可毁世界(震震果实)
2022/03/18 日漫