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 相关文章推荐
简单的过滤字符串中的HTML标记
Dec 25 PHP
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
Jul 01 PHP
php实现俄罗斯乘法实例
Mar 07 PHP
如何实现php图片等比例缩放
Jul 28 PHP
PHP实现的memcache环形队列类实例
Jul 28 PHP
php 解决substr()截取中文字符乱码问题
Jul 18 PHP
微信红包随机生成算法php版
Jul 21 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
Jul 28 PHP
PHP简单验证码功能机制实例详解
Mar 27 PHP
php设计模式之观察者模式定义与用法经典示例
Sep 19 PHP
PHP实现抽奖功能实例代码
Jun 30 PHP
imagettftext() 失效,不起作用
Mar 09 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
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
2009/09/15 Javascript
Pro JavaScript Techniques学习笔记
2010/12/28 Javascript
js选取多个或单个元素的实现代码(用class)
2012/08/22 Javascript
将字符串转换成gb2312或者utf-8编码的参数(js版)
2013/04/10 Javascript
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
window.returnValue使用方法示例介绍
2014/07/03 Javascript
nodejs的10个性能优化技巧
2014/07/15 NodeJs
JS或jQuery获取ASP.NET服务器控件ID的方法
2015/06/08 Javascript
JavaScript中var关键字的使用详解
2015/08/14 Javascript
简单谈谈javascript Date类型
2015/09/06 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
2016/03/07 Javascript
javascript实现的全国省市县无刷新多级关联菜单效果代码
2016/08/01 Javascript
Django使用多数据库的方法
2017/09/06 Javascript
微信小程序中上传图片并进行压缩的实现代码
2018/08/28 Javascript
jQuery实现的简单手风琴效果示例
2018/08/29 jQuery
jquery实现二级导航下拉菜单效果实例
2019/05/14 jQuery
Vue SPA 初次进入加载动画实现代码
2019/11/14 Javascript
解决Vue-Router升级导致的Uncaught (in promise)问题
2020/08/07 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
[01:07:47]Secret vs Optic Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
[34:39]Secret vs VG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python中使用ConfigParser解析ini配置文件实例
2014/08/30 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
2017/08/23 Python
python用requests实现http请求代码实例
2019/10/31 Python
python获取引用对象的个数方式
2019/12/20 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
2020/03/12 Python
《水上飞机》教学反思
2014/04/10 职场文书
城管大队整治方案
2014/05/06 职场文书
大学生学习新党章思想汇报
2014/10/25 职场文书
化妆品促销活动总结
2015/05/07 职场文书
党支部季度考核意见
2015/06/02 职场文书
安全生产感想
2015/08/07 职场文书
全国劳模先进事迹材料(2016精选版)
2016/02/25 职场文书
祝福语集锦:给满月宝宝的祝福语
2019/11/20 职场文书
python基础之类属性和实例属性
2021/10/24 Python