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 相关文章推荐
PHP 错误之引号中使用变量
May 04 PHP
PHP 解决utf-8和gb2312编码转换问题
Mar 18 PHP
利用php实现禁用IE和火狐的缓存问题
Dec 03 PHP
PHP时间格式控制符对照表分享
Jul 23 PHP
利用中国天气预报接口实现简单天气预报
Jan 20 PHP
PHP删除数组中空值的方法介绍
Apr 14 PHP
PHP多线程编程之管道通信实例分析
Mar 07 PHP
PHP 错误处理机制
Jul 06 PHP
smarty高级特性之对象的使用方法
Dec 25 PHP
thinkPHP导出csv文件及用表格输出excel的方法
Dec 30 PHP
PHP7如何开启Opcode打造强悍性能详解
May 11 PHP
php 多继承的几种常见实现方法示例
Nov 18 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 strstr 函数判断字符串是否否存在的实例代码
2013/09/28 PHP
神盾加密解密教程(三)PHP 神盾解密工具
2014/06/08 PHP
浅谈php和js中json的编码和解码
2016/10/24 PHP
Thinkphp整合微信支付功能
2016/12/14 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
PHPStudy下如何为Apache安装SSL证书的方法步骤
2019/01/23 PHP
JavaScript仿静态分页实现方法
2015/08/04 Javascript
JavaScript中的Object对象学习教程
2016/05/20 Javascript
js中new一个对象的过程
2017/02/20 Javascript
js禁止Backspace键使浏览器后退的实现方法
2017/09/01 Javascript
JavaScript正则表达式和级联效果
2017/09/14 Javascript
利用JQUERY实现多个AJAX请求等待的实例
2017/12/14 jQuery
vue实现树形菜单效果
2018/03/19 Javascript
Vue常见面试题整理【值得收藏】
2018/09/20 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
2018/10/11 Javascript
在 Vue.js中优雅地使用全局事件的方法
2019/02/01 Javascript
使用vue开发移动端管理后台的注意事项
2019/03/07 Javascript
微信二次分享报错invalid signature问题及解决方法
2019/04/01 Javascript
layer弹出层自定义提交取消按钮的例子
2019/09/10 Javascript
webpack打包优化的几个方法总结
2020/02/10 Javascript
es6函数中的作用域实例分析
2020/04/18 Javascript
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
在Python中使用HTMLParser解析HTML的教程
2015/04/29 Python
剖析Python的Twisted框架的核心特性
2016/05/25 Python
Python程序中的观察者模式结构编写示例
2016/05/27 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
python 输入一个数n,求n个数求乘或求和的实例
2018/11/13 Python
python3.7.3版本和django2.2.3版本是否可以兼容
2020/09/01 Python
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
英国家庭珠宝商:T. H. Baker
2018/02/08 全球购物
波兰补充商店:Muscle Power
2018/10/29 全球购物
房屋改造计划书
2014/01/10 职场文书
条幅标语大全
2014/06/20 职场文书
统计员岗位职责范本
2015/04/14 职场文书
九不准学习心得体会
2016/01/23 职场文书
2019年干货:自我鉴定
2019/03/25 职场文书