thinkphp怎么隐藏index.php
最近也遇到了这个问题,顺便回答一下,我这边前后台入口文件都在一个文件夹里,想配置成以下这样:
前后:www.xxx.com/控制器/方法 (模块已配置故不展示)
后台:www.yyy.com/控制器/方法 (模块已配置故不展示)
所以需要准备两个域名,分别访问前后台,然后在.htaccess文件中通过匹配域名的方式来决定进入哪个规则,所以配置成了下面这样:
Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{HTTP_HOST} ^.*xxx\.com$ RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] RewriteCond %{HTTP_HOST} ^.*yyy\.com$ RewriteRule ^(.*)$ /admin.php/$1 [QSA,PT,L]结果前台没问题而后台报错,页面展示:
日志文件里显示:Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace
后来搜索资料解决了这个问题,在.htaccess文件中添加如下两行
RewriteCond %{ENV:REDIRECT_STATUS} 200RewriteRule .* - [L]这两行代码是用来停止重定向无限循环的,至此前后台入口文件都得到了隐藏,希望能帮助后面的人,全部配置代码是:
Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{ENV:REDIRECT_STATUS} 200 RewriteRule .* - [L] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{HTTP_HOST} ^.*xxx\.com$ RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] RewriteCond %{HTTP_HOST} ^.*yyy\.com$ RewriteRule ^(.*)$ /admin.php/$1 [QSA,PT,L]这个答案也可以回答重定向次数限制的问题,如果出现这个错误,则考虑是不是重定向无限循环了,至于为什么上面的配置会出现这个错误,我也不明白,同时希望有明白的可以指教。
#伪静态和泛域名
#此文件禁止在行内注释
RewriteEngine on
#禁止对图片等文件重写:没有这一条,所有的404都会执行index.php脚本,耗费大量资源。
RewriteCond %{REQUEST_URI} !((.*).jpg|.jpeg|.bmp|.gif|.png|.js|.css)$
#禁止对/public文件夹内重写,作用同上
RewriteCond %{REQUEST_URI} !(^/public/(.*))$
#如果是一个物理存在的目录,禁止重写
RewriteCond %{REQUEST_FILENAME} !-d
#如果是一个物理存在的文件,禁止重写
RewriteCond %{REQUEST_FILENAME} !-f
#上面2条不识别REQUEST_FILENAME时的替代写法
#RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
#RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
#php api模式,服务器能识别PATH_INFO
#RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
#php fastcgi模式 服务器不识别PATH_INFO
RewriteRule ^(.*)$ index.php [E=PATH_INFO:$1,QSA,PT,L]
可以通过URL重写隐藏应用的入口文件index.php,下面是相关服务器的配置参考:
[ Apache ]
httpd.conf配置文件中加载了mod_rewrite.so模块
AllowOverride None 将None改为 All
把下面的内容保存为.htaccess文件放到应用入口文件的同级目录下
<IfModule mod_rewrite.c>
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 ]
在Nginx低版本中,是不支持PATHINFO的,但是可以通过在Nginx.conf中配置转发规则实现:
location / { // …..省略部分代码
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
其实内部是转发到了ThinkPHP提供的兼容模式的URL,利用这种方式,可以解决其他不支持PATHINFO的WEB服务器环境。
如果你的ThinkPHP安装在二级目录,Nginx的伪静态方法设置如下,其中youdomain是所在的目录名称。
location /youdomain/ {
if (!-e $request_filename){
rewrite ^/youdomain/(.*)$ /youdomain/index.php?s=$1 last;
}
}
原来的访问URL:
http://serverName/index.php/模块/控制器/操作/[参数名/参数值...]
设置后,我们可以采用下面的方式访问:
http://serverName/模块/控制器/操作/[参数名/参数值...]
默认情况下,URL地址中的模块不能省略,如果你需要简化某个模块的URL访问地址,可以通过设置模块列表和默认模块或者采用子域名部署到模块的方式解决,请参考后面的模块和域名部署部分。
参考文档:http://www.kancloud.cn/manual/thinkphp/1866
这个你可以用thinkphp中的URL重写功能:
可以访问的时候,不会在地址栏中出现index.php
详细步骤,看图片中的介绍:我自己整理的,你不懂,可以继续追问,希望可以帮到你
如何部署thinkphp网站thinkphp怎么部署
{denyall;}}配置文件的基本内容如上;配置完成后测试配置文件是否正确这样配置就可以使用了然后重启nginx服务器这样nginx配置就结束了可以使用了。吧站点文件放到对应的目录下面。我直接gitclone过去的。二.thinkphp 项目文件转移本来以为上传完就结束了。上传上去碰到的第一个问题就是访问页面报错,页面被电信...
怎么学thinkPHP
学习方法如下:1、首先了解MVC的工作原理。2、然后了解thinkphp的命名规范文档结构了解三者的使用过程。3、接着要了解controller(控制器)、model(模型)、view(视图或者说是模板)的基本使用方法。4、开始写代码做小项目实现基本的增删改查功能。5、再小项目的基础上添加新功能如分页ajax文件上传缩略图...
thinkphp框架安装后怎么用
1、ThinkPHP最新版本可以在官方网站下载。2、下载后的压缩文件解压到WEB目录(或者任何目录都可以),框架的目录结构为:├─ThinkPHP.php 框架入口文件 ├─Common 框架公共文件 ├─Conf 框架配置文件 ├─Extend 框架扩展目录 ├─Lang 核心语言包目录 ├─Lib 核心类库目录 │ ├─Behavior 核心...
Thinkphp怎么这么难学?
ThinkPHP不是很难学,你觉得难学可能是你在面向对象方面的知识有所欠缺,补一下PHP面向对象方面的知识吧。大概花你5天左右的时间,之后你再回来使用ThinkPHP,很多东西就能融会贯通了。ThinkPHP的手册是很完善的,多看手册,慢慢练习,一步一步来,过一段日子你就能得心应手了。祝你学有所成!
thinkphp 数据库查询怎么查?
thinkphp如何查询数据库?数据库查询 ThinkPHP内置了非常灵活的查询方法,可以快速的进行数据查询操作。查询条件可以用于CURD等任何操作,作为where方法的参数传入即可。ThinkPHP可以支持直接使用字符串作为查询条件,但是大多数情况推荐使用索引数组或者对象来作为查询条件,因为会更加安全。查询方式 一、使用字符串...
thinkphp写的代码怎么转普通php
1、将完整版压缩包解压的内容拷贝到指定的服务器文件夹内。2、打开ThinkPHP提供的index.php文件。3、按照自身需要修改目录即可。
THINKPHP运行效率怎么样,二次开发难度如何,有用过的吗?指导小弟一下...
用thinkphp开发中小型的系统 在运行效率上来说,是没有问题的。我感觉重要的是掌握和熟悉它的开发模式。 相对分离的开发模式,很适合拓展和维护。所以你说的二次开发是没有问题的,它的文件目录是很清晰的,熟练的话很方便。学习成本还是有一些的,这个视个人情况而定。我个人感觉,用thinkphp,一些...
童攀thinkphp讲的怎么样'
3:技术难度一般或高的,几乎没有更新完,不说更新完,几乎还没讲到正题,比如swoole开发把b2b多商户系统,更新了几个月更新了十几节(一节大概10来分钟)就关闭课程,然后重新开了个thinkphp6.1+swoole实战b2b多商户系统,我觉得就是他搞不定swoole才转的tp,而且这货老爱跳票,就这个b2b多商户的...
ThinkPHP项目目录下Common目录要怎么使?
1、thinkphp项目里面的common文件夹的公共方法怎么命名怎么使用:common文件夹下建立一个common.php文件(这是固定的)->common.php文件中可以自定义函数,比如:functionaa($str){...},函数名随意,参数随意->关于如何使用,分2个地方,一个是控制器(即Action,如loginAction.class.php)中,可以直接...
本人新手,刚安装thinkphp,怎么不成功
ThinkPHP最新版本可以在官方网站(http:\/\/thinkphp.cn\/down\/framework.html)下载。 最新的3.2.3版本下载地址:http:\/\/www.thinkphp.cn\/down\/610.html。 如果你希望保持最新的更新,可以通过github获取当前最新的版本(完整版)。Git获取地址列表(你可以选择一个最快的地址): Github: https:\/\/github.com\/liu21st\/think...
玉蚀誉利: 配置里设'default_module'=> 'Index' 路由配置一下就ok了 这样就可以了
婺源县17025141385: thinkphp如何去掉地址栏index.php - ?
玉蚀誉利: 做路由rewrite nginx 在配置文件的server{}里面加上代码:if (!-f $request_filename) { rewrite ^(.*)$ /index.php?s=$1; } 记得tp框架配置一下url模式改成rewrite模式哦 :)
婺源县17025141385: thinkphp nginx怎么配置隐藏index.php - ?
玉蚀誉利: 复制我自己的回答,https://zhidao.baidu.com/question/501205824638204404 ThinkPHP3.2 把下面代码加入nginx的server{}里面,tp配置开启rewrite模式 if (!-f $request_filename) { rewirte ^(.*)$ /index.php?s=$1; }
婺源县17025141385: Thinkphp3.2.1版本的隐藏index.php怎么弄 - ?
玉蚀誉利: 根目录建一个.htaccess,写上以下代码: Options +FollowSymlinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
婺源县17025141385: 使用thinkphp时,怎么只去掉index.php URL路径呢? - ?
玉蚀誉利: .htaccess文件代码<Files ~ "^.(htaccess|htpasswd)$"> deny from all</Files> Redirect permanent /index.php / order deny,allow 或参考ThinkPHP3.0完全开发手册 16.2 隐藏index.php
婺源县17025141385: htaccess 怎么隐藏index.php - ?
玉蚀誉利: 去掉 URL 中的 index.phpThinkPHP 作为 PHP 框架,是单一入口的,那么其原始的 URL 便不是那么友好.但 ThinkPHP 提供了各种机制来定制需要的 URL 格式,配合 Apache .htaccess 文件,更是可以定制出人性化的更利于 SEO 的 URL 地址...
婺源县17025141385: thinkphp url怎么去掉index.php - ?
玉蚀誉利: 可以通过URL重写隐藏应用的入口文件index.php,下面是相关服务器的配置参考:[ Apache ] httpd.conf配置文件中加载了mod_rewrite.so模块 AllowOverride None 将None改为 All 把下面的内容保存为.htaccess文件放到应用入口文件的同级目录下...
婺源县17025141385: thinkphp站点下怎么隐藏前台和后台的入口文件index.php,admin.php 使分页的时候不出 - ?
玉蚀誉利: 了解你的意思.只要你的服务器支持伪静态重写规则就可以了.然后不是根目录有个点儿开头的文件?里面写入:RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] 去掉 index.php,admin.php 试试,没有也可以了吧.就这么简单的.
婺源县17025141385: thinkphp中怎么去掉index.php - ?
玉蚀誉利: 1.打开apache配置文件:#LoadModule rewrite_module modules/mod_rewrite.so把前面的警号去掉 AllowOverride None 把None改为 All //在APACHE里面去配置 (注意其他地方的AllowOverride也统统设置为ALL)2、将以下代码另存为名称为....
婺源县17025141385: thinkphp 怎么把 url中间的 index 方法 去掉 - ?
玉蚀誉利: 在Apache根目录conf文件夹下的httpd.conf配置文件中加载mod_rewrite.so模块;#LoadModule rewrite_module modules/mod_rewrite.so把前面的警号去掉 AllowOverride None 将None改为 All 在APACHE里面去配置 (注意其他地方的...