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 相关文章推荐
有道搜索和IP138的IP的API接口(PHP应用)
Nov 29 PHP
怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
Apr 22 PHP
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
May 08 PHP
Yii不依赖Model的表单生成器用法实例
Dec 04 PHP
Thinkphp调用Image类生成缩略图的方法
Mar 07 PHP
php生成图片验证码的实例讲解
Aug 03 PHP
thinkphp制作404跳转页的简单实现方法
Sep 22 PHP
使用PHP连接多种数据库的实现代码(mysql,access,sqlserver,Oracle)
Dec 21 PHP
利用PHP获取网站访客的所在地位置
Jan 18 PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 PHP
PHP实现类似题库抽题效果
Aug 16 PHP
PHP使用CURL实现下载文件功能示例
Jun 03 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中对缓冲区的控制实现代码
2013/09/29 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
js 图片等比例缩放代码
2010/05/13 Javascript
jQuery判断checkbox(复选框)是否被选中以及全选、反选实现代码
2014/02/21 Javascript
node.js学习总结之调式代码的方法
2014/06/25 Javascript
JavaScript数据库TaffyDB用法实例分析
2015/07/27 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
2016/06/13 Javascript
JS获取当前页面名称的简单实例
2016/08/19 Javascript
JavaScript实现审核流程状态的动态显示进度条
2017/03/15 Javascript
微信小程序表单验证功能完整实例
2017/12/01 Javascript
vue脚手架搭建过程图解
2018/06/06 Javascript
解决vue中post方式提交数据后台无法接收的问题
2018/08/11 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
2020/02/19 Javascript
js实现表单项的全选、反选及删除操作示例
2020/06/05 Javascript
Vue 请求传公共参数的操作
2020/07/31 Javascript
Python获取单个程序CPU使用情况趋势图
2015/03/10 Python
Python基于scrapy采集数据时使用代理服务器的方法
2015/04/16 Python
python使用numpy读取、保存txt数据的实例
2018/10/14 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
2019/07/04 Python
更新pip3与pyttsx3文字语音转换的实现方法
2019/08/08 Python
Python爬虫后获取重定向url的两种方法
2021/01/19 Python
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
2012/03/14 面试题
30年同学聚会感言
2014/01/30 职场文书
外联部演讲稿
2014/05/24 职场文书
党代会心得体会
2014/09/04 职场文书
放射科岗位职责
2015/02/14 职场文书
幼儿园食品安全责任书
2015/05/08 职场文书
2015年反腐倡廉工作总结
2015/05/14 职场文书
2016元旦晚会主持人开场白和结束语
2015/12/03 职场文书
SQL写法--行行比较
2021/08/23 SQL Server
使用springMVC所需要的pom配置
2021/09/15 Java/Android
Nginx报错104:Connection reset by peer问题的解决及分析
2022/07/23 Servers