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 相关文章推荐
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
Oct 09 PHP
ThinkPHP写第一个模块应用
Feb 20 PHP
php获取apk包信息的方法
Aug 15 PHP
PHP中mysqli_affected_rows作用行数返回值分析
Dec 26 PHP
php页面缓存方法小结
Jan 10 PHP
PHP中实现接收多个name相同但Value不相同表单数据实例
Feb 03 PHP
php使用for语句输出三角形的方法
Jun 09 PHP
php简单统计字符串单词数量的方法
Jun 19 PHP
PHP未登录自动跳转到登录页面
Dec 21 PHP
完美解决thinkphp唯一索引重复时出错的问题
Mar 31 PHP
PHP编程求最大公约数与最小公倍数的方法示例
May 29 PHP
laravel-admin 实现在指定的相册下添加照片
Oct 21 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判断页面是否是微信打开的示例(微信打开网页)
2014/04/25 PHP
thinkPHP实现MemCache分布式缓存功能
2016/03/23 PHP
PHP实现八皇后算法
2019/05/06 PHP
让GoogleCode的SVN下的HTML文件在FireFox下正常显示.
2009/05/25 Javascript
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
js读取cookie方法总结
2014/10/31 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
jquery果冻抖动效果实现方法
2015/01/15 Javascript
JS网页在线获取鼠标坐标值的方法
2015/02/28 Javascript
js实现文本框中输入文字页面中div层同步获取文本框内容的方法
2015/03/03 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
2015/03/30 Javascript
javascript实现对表格元素进行排序操作
2015/11/18 Javascript
常用的JQuery函数及功能小结
2016/03/24 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
2016/08/29 Javascript
JavaScript正则表达式小结(test|match|search|replace|split|exec)
2016/12/08 Javascript
jQuery实现文字自动横移
2017/01/08 Javascript
javascript删除html标签函数cIsHTML
2017/01/09 Javascript
JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)
2017/03/30 Javascript
jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
2017/08/23 jQuery
Three.js实现浏览器变动时进行自适应的方法
2017/09/26 Javascript
详解react关于事件绑定this的四种方式
2018/03/09 Javascript
详解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
2018/11/13 Javascript
vue项目打包后请求地址错误/打包后跨域操作
2020/11/04 Javascript
vue动态设置路由权限的主要思路
2021/01/13 Vue.js
[02:57]DOTA2英雄基础教程 风行者
2014/01/16 DOTA
Python实现输出程序执行进度百分比的方法
2017/09/16 Python
python二维图制作的实例代码
2020/12/03 Python
TIME时代杂志台湾总代理:台时亚洲
2018/10/22 全球购物
切尔西足球俱乐部官方网上商店:Chelsea FC
2019/06/17 全球购物
德国自行车商店:Tretwerk
2019/06/21 全球购物
医学生实习自荐信
2013/10/01 职场文书
CNC数控操作工岗位职责
2013/11/19 职场文书
应届毕业生自我鉴定范文
2013/12/27 职场文书
机关门卫岗位职责
2013/12/30 职场文书
2015年禁毒宣传活动总结
2015/03/25 职场文书
Go语言空白表示符_的实例用法
2021/07/04 Golang