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 相关文章推荐
第1次亲密接触PHP5(2)
Oct 09 PHP
利用递归把多维数组转为一维数组的函数
Oct 09 PHP
PHP 手机归属地查询 api
Feb 08 PHP
PHP读取ACCESS数据到MYSQL的代码
May 11 PHP
基于php socket(fsockopen)的应用实例分析
Jun 02 PHP
Codeigniter实现处理用户登录验证后的URL跳转
Jun 12 PHP
php运行时动态创建函数的方法
Mar 16 PHP
PHP之浮点数计算比较以及取整数不准确的解决办法
Jul 29 PHP
配置eAccelerator和XCache扩展来加速PHP程序的执行
Dec 22 PHP
php制作基于xml的RSS订阅源功能示例
Feb 08 PHP
Laravel学习教程之路由模块
Aug 18 PHP
thinkphp5使用无限极分类
Feb 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
文件上传程序的全部源码
2006/10/09 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
2016/11/16 PHP
PHP手机号中间四位用星号*代替显示的实例
2017/06/02 PHP
PHP基于回溯算法解决n皇后问题的方法示例
2017/11/07 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
JQuery 学习笔记 选择器之三
2009/07/23 Javascript
JQuery操作textarea,input,select,checkbox方法
2015/09/02 Javascript
JS实现可点击展开与关闭的左侧广告代码
2015/09/02 Javascript
javascript匀速动画和缓冲动画详解
2016/10/20 Javascript
简单几步实现返回顶部效果
2016/12/05 Javascript
JavaScript实现选中文字提示新浪微博分享效果
2017/06/15 Javascript
详解React Native网络请求fetch简单封装
2017/08/10 Javascript
JavaScript自执行函数和jQuery扩展方法详解
2017/10/27 jQuery
Vue入门之数量加减运算操作示例
2018/12/11 Javascript
Vue 引入AMap高德地图的实现代码
2019/04/29 Javascript
React组件对子组件children进行加强的方法
2019/06/23 Javascript
[01:03:41]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第三场 2月2日
2021/03/11 DOTA
python生成随机图形验证码详解
2017/11/08 Python
python调用百度REST API实现语音识别
2018/08/30 Python
Python设计模式之建造者模式实例详解
2019/01/17 Python
Python3.5面向对象与继承图文实例详解
2019/04/24 Python
python 生成器和迭代器的原理解析
2019/10/12 Python
python opencv pytesseract 验证码识别的实现
2020/08/28 Python
用pushplus+python监控亚马逊到货动态推送微信
2021/01/29 Python
HTML5 Canvas 破碎重组的视频特效的示例代码
2019/09/24 HTML / CSS
计算机专业个人求职自荐信
2013/09/21 职场文书
清洁工表扬信
2014/01/08 职场文书
学习自我鉴定
2014/02/01 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
《骑牛比赛》教后反思
2014/04/22 职场文书
党的群众路线教育实践活动对照检查材料范文
2014/09/24 职场文书
四年级语文教学反思
2016/03/03 职场文书
导游词之宿迁乾隆行宫
2019/10/15 职场文书
写一个Python脚本自动爬取Bilibili小视频
2021/04/24 Python
Redis RDB技术底层原理详解
2021/09/04 Redis
python lambda 表达式形式分析
2022/04/03 Python