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 相关文章推荐
图书管理程序(一)
Oct 09 PHP
PHP模块 Memcached功能多于Memcache
Jun 14 PHP
php实现邮件发送并带有附件
Jan 24 PHP
PHP面向对象程序设计之接口用法
Aug 20 PHP
重新认识php array_merge函数
Aug 31 PHP
初识laravel5
Mar 02 PHP
php通过curl模拟登陆DZ论坛
May 11 PHP
PHP微信分享开发详解
Jan 14 PHP
Nginx下ThinkPHP5的配置方法详解
Aug 01 PHP
kindeditor 加入七牛云上传的实例讲解
Nov 12 PHP
thinkPHP实现基于ajax的评论回复功能
Jun 22 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
Nov 24 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(3) php 函数
2010/02/15 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
WordPress中设置Post Type自定义文章类型的实例教程
2016/05/10 PHP
javascript的trim,ltrim,rtrim自定义函数
2008/09/21 Javascript
javascript new后的constructor属性
2010/08/05 Javascript
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
通过js获取div的background-image属性
2013/10/15 Javascript
jQuery中阻止冒泡事件的方法介绍
2014/04/12 Javascript
jquery仿搜索自动联想功能代码
2014/05/23 Javascript
javascript获取dom的下一个节点方法
2014/09/05 Javascript
js实现透明度渐变效果的方法
2015/04/10 Javascript
Javascript常用小技巧汇总
2015/06/24 Javascript
jquery如何获取元素的滚动条高度等实现代码
2015/10/19 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
2015/11/18 Javascript
前端开发必知的15个jQuery小技巧
2017/01/22 Javascript
ES6中module模块化开发实例浅析
2017/04/06 Javascript
浅谈Vue 初始化性能优化
2017/08/31 Javascript
webpack分离css单独打包的方法
2018/06/12 Javascript
python计算对角线有理函数插值的方法
2015/05/07 Python
Python2.x利用commands模块执行Linux shell命令
2016/03/11 Python
Python中使用asyncio 封装文件读写
2016/09/11 Python
美国维生素、补充剂、保健食品购物网站:Vitacost
2016/08/05 全球购物
在购买印度民族服饰:Soch
2020/09/15 全球购物
年度考核自我评价
2014/01/25 职场文书
国际贸易毕业生自荐书
2014/06/22 职场文书
第二批党的群众路线教育实践活动总结报告
2014/10/30 职场文书
2014年高中班主任工作总结
2014/11/08 职场文书
2014教师评职称工作总结
2014/11/10 职场文书
交通事故协议书范本
2014/11/18 职场文书
2014年保卫科工作总结
2014/12/05 职场文书
大学生毕业个人总结
2015/02/15 职场文书
2015社区精神文明建设工作总结
2015/04/21 职场文书
春节随笔
2015/08/15 职场文书
原生JS实现分页
2022/04/19 Javascript
Android studio 简单计算器的编写
2022/05/20 Java/Android
MySQL 语句执行顺序举例解析
2022/06/05 MySQL