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 相关文章推荐
从C/C++迁移到PHP——判断字符类型的函数
Oct 09 PHP
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
Dec 06 PHP
自己前几天写的无限分类类
Feb 14 PHP
判断PHP数组是否为空的代码
Sep 08 PHP
php中配置文件操作 如config.php文件的读取修改等操作
Jul 07 PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
Nov 11 PHP
CI框架中site_url()和base_url()的区别
Jan 07 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
Oct 27 PHP
两种php去除二维数组的重复项方法
Nov 04 PHP
PHP 生成微信红包代码简单
Mar 25 PHP
PHP中Restful api 错误提示返回值实现思路
Apr 12 PHP
PHP性能分析工具xhprof的安装使用与注意事项
Dec 19 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检测用户当前使用的浏览器是否为IE浏览器
2013/12/03 PHP
windows7下安装php的imagick和imagemagick扩展教程
2014/07/04 PHP
学习php设计模式 php实现建造者模式
2015/12/07 PHP
javascript编程起步(第六课)
2007/01/10 Javascript
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
2009/01/30 Javascript
判断客户端浏览器是否安装了Flash插件的多种方法
2010/08/11 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
页面定时刷新(1秒刷新一次)
2013/11/22 Javascript
详解JavaScript函数
2015/12/01 Javascript
JS创建对象几种不同方法详解
2016/03/01 Javascript
JavaScript编码风格指南(中文版)
2016/08/26 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
2018/03/01 Javascript
详解如何在vue项目中使用lodop打印插件
2018/09/27 Javascript
Angularjs实现数组随机排序的方法
2018/10/02 Javascript
微信小程序实现的绘制table表格功能示例
2019/04/26 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
深入学习TypeScript 、React、 Redux和Ant-Design的最佳实践
2019/06/17 Javascript
mui js控制开关状态、修改switch开关的值方法
2019/09/03 Javascript
深入浅析vue中cross-env的使用
2019/09/12 Javascript
vue实现禁止浏览器记住密码功能的示例代码
2021/02/03 Vue.js
python实现360的字符显示界面
2014/02/21 Python
python实现将内容分行输出
2015/11/05 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
2018/11/07 Python
python版大富翁源代码分享
2018/11/19 Python
python 连续不等式语法糖实例
2020/04/15 Python
基于 HTML5 的 WebGL 3D 版俄罗斯方块的示例代码
2018/05/28 HTML / CSS
美国在线轮胎零售商:SimpleTire
2019/04/08 全球购物
营业经理岗位职责
2013/11/10 职场文书
护士毕业生自荐信
2014/02/07 职场文书
预备党员入党自我评价范文
2014/03/10 职场文书
利群广告词
2014/03/20 职场文书
请假条标准格式规范
2014/04/10 职场文书
小学阳光体育活动总结
2014/07/05 职场文书
2014年职称评定工作总结
2014/11/26 职场文书
药品销售员2015年终工作总结
2015/10/22 职场文书
2019年大学推荐信
2019/06/24 职场文书