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 相关文章推荐
mysql 字段类型说明
Apr 27 PHP
PHP中函数内引用全局变量的方法
Oct 20 PHP
php float不四舍五入截取浮点型字符串方法总结
Oct 28 PHP
php上传文件中文文件名乱码的解决方法
Nov 01 PHP
Zend Framework教程之Resource Autoloading用法实例
Mar 08 PHP
PHP入门教程之图像处理技巧分析
Sep 11 PHP
php格式化时间戳
Dec 17 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
在Laravel中使用MongoDB的方法示例
Nov 11 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
Mar 26 PHP
TP3.2框架分页相关实现方法分析
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获取谷歌PR值算法,附上php查询PR值代码示例
2011/12/25 PHP
PHP中$_SERVER的详细参数与说明介绍
2013/10/26 PHP
php数组键名技巧小结
2015/02/17 PHP
php使用COPY函数更新配置文件的方法
2015/06/18 PHP
Linux下编译redis和phpredis的方法
2016/04/07 PHP
php操纵mysqli数据库的实现方法
2016/09/18 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
2019/01/16 PHP
动态调用CSS文件的JS代码
2010/07/29 Javascript
jQuery Ajax异步处理Json数据详解
2013/11/05 Javascript
编写自己的jQuery提示框(Tip)插件
2015/02/05 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
2016/09/08 Javascript
微信和qq时间格式模板实例详解
2016/10/21 Javascript
vue.js将unix时间戳转换为自定义时间格式
2017/01/03 Javascript
Bootstrap的popover(弹出框)在append后弹不出(失效)
2017/02/27 Javascript
Nodejs 和Session 原理及实战技巧小结
2017/08/25 NodeJs
js实现动态改变radio状态的方法
2018/02/28 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
记录vue做微信自定义分享的一些问题
2019/09/12 Javascript
python三元运算符实现方法
2013/12/17 Python
Python生成pdf文件的方法
2014/08/04 Python
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
python消费kafka数据批量插入到es的方法
2018/12/27 Python
python模块导入的方法
2019/10/24 Python
pytorch实现Tensor变量之间的转换
2020/02/17 Python
基于python 等频分箱qcut问题的解决
2020/03/03 Python
django之从html页面表单获取输入的数据实例
2020/03/16 Python
HTML中fieldset标签概述及使用方法
2013/02/01 HTML / CSS
Canvas制作旋转的太极的示例
2018/03/09 HTML / CSS
Farah官方网站:男士服装及配件
2019/11/01 全球购物
幼儿园门卫岗位职责
2014/02/14 职场文书
投标服务承诺书
2014/05/28 职场文书
会计专业求职信
2014/08/10 职场文书
关于感谢信的范文
2015/01/23 职场文书
用golang如何替换某个文件中的字符串
2021/04/25 Golang
Mysql实现主从配置和多主多从配置
2021/06/02 MySQL
使用HttpSessionListener监听器实战
2022/03/17 Java/Android