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 相关文章推荐
用DBSQL类加快开发MySQL数据库程序的速度
Oct 09 PHP
php 8小时时间差的解决方法小结
Dec 22 PHP
php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
Aug 23 PHP
防止本地用户用fsockopen DDOS攻击对策
Nov 02 PHP
php array的学习笔记
May 16 PHP
通过5个php实例细致说明传值与传引用的区别
Aug 08 PHP
解析mysql left( right ) join使用on与where筛选的差异
Jun 18 PHP
解析yii数据库的增删查改
Jun 20 PHP
php 批量生成html,txt文件的实现代码
Jun 26 PHP
PHP常用的缓存技术汇总
May 05 PHP
PHP简单实现欧拉函数Euler功能示例
Nov 06 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
Oct 12 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 将字符串按大写字母分隔成字符串数组
2010/04/30 PHP
PHP新手入门学习方法
2011/05/08 PHP
PHP SPL标准库之SplFixedArray使用实例
2015/05/12 PHP
使用js的replace()方法查找字符示例代码
2013/10/28 Javascript
javascript实用小函数使用介绍
2013/11/11 Javascript
JS 实现列表与多选框选择附预览动画
2014/10/29 Javascript
JavaScript中number转换成string介绍
2014/12/31 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
2015/03/04 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
2015/04/03 Javascript
JavaScript Function函数类型介绍
2015/04/08 Javascript
JavaScript开发者必备的10个Sublime Text插件
2016/02/27 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
完美解决iview 的select下拉框选项错位的问题
2018/03/02 Javascript
如何为vue的项目添加单元测试
2018/12/19 Javascript
highcharts.js数据绑定方式代码实例
2019/11/13 Javascript
js实现简单音乐播放器
2020/06/30 Javascript
浅谈vue单页面中有多个echarts图表时的公用代码写法
2020/07/19 Javascript
详解ES6中class的实现原理
2020/10/03 Javascript
Python用imghdr模块识别图片格式实例解析
2018/01/11 Python
Python企业编码生成系统之系统主要函数设计详解
2019/07/26 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
Python利用Xpath选择器爬取京东网商品信息
2020/06/01 Python
对python pandas中 inplace 参数的理解
2020/06/27 Python
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
Omio中国:全欧洲低价大巴、火车和航班搜索和比价
2018/08/09 全球购物
英国最好的温室之家:Greenhouses Direct
2019/07/13 全球购物
环境工程与管理大学毕业生求职信
2013/10/02 职场文书
生产管理的三大手法
2013/11/11 职场文书
运动会通讯稿50字
2014/01/30 职场文书
经销商订货会主持词
2014/03/27 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
中小学生安全教育观后感
2015/06/17 职场文书
python基于opencv批量生成验证码的示例
2021/04/28 Python
MySQL中JOIN连接的基本用法实例
2022/06/05 MySQL