thinkphp如何隐藏index.php之IIS和nginx

例如你的原路径是 http://localhost/test/index.php/index/add
那么现在的地址是 http://localhost/test/index/add

如何去掉index.php呢?

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;
        }
    }

apache环境

1.httpd.conf配置文件中加载了mod_rewrite.so模块  //在APACHE里面去配置

#LoadModule rewrite_module modules/mod_rewrite.so把前面的警号去掉

2.AllowOverride None 讲None改为 All      //在APACHE里面去配置 (注意其他地方的AllowOverride也统统设置为ALL)

 代码如下 复制代码
<Directory "D:/server/apache/cgi-bin">
AllowOverride none  改   AllowOverride ALL
Options None
Order allow,deny
Allow from all
</Directory>

3.确保URL_MODEL设置为2,在项目的配置文件里写

 代码如下 复制代码

return Array(
   'URL_MODEL' => '2',
);

4 .htaccess文件必须放到跟目录下
这个文件里面加:

 代码如下 复制代码

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

补充:在windows下不能建立以点开头的文件,你可以先随便建立一个文件
然后在DOS在操作 rename xxxx.xxxx   .htaccess

时间: 2024-12-08 15:25:24

thinkphp如何隐藏index.php之IIS和nginx的相关文章

thinkphp隐藏index.php/home并允许访问其他模块的实现方法_php实例

想要达成的效果很简单,我有两个模块,Home.Wechat. http://localhost/index.php/home/index/index 缩短为: http://localhost/index/index http://localhost/index.php/wechat/index/index 缩短为: http://localhost/wechat/index/index 隐藏index.php,这个比较简单,我开启.htaccess的支持就行,具体配置执行百度吧,我用的是apa

thinkphp隐藏index.php/home并允许访问其他模块的实现方法

想要达成的效果很简单,我有两个模块,Home.Wechat. http://localhost/index.php/home/index/index 缩短为: http://localhost/index/index http://localhost/index.php/wechat/index/index 缩短为: http://localhost/wechat/index/index 隐藏index.php,这个比较简单,我开启.htaccess的支持就行,具体配置执行百度吧,我用的是apa

ThinkPHP后台首页index使用frameset时的注意事项分析_php实例

html的frameset标签在多窗口程序设计中有着广泛的应用,尤其是在项目后台页面部分.本文就来分析ThinkPHP后台首页index使用frameset时的注意事项.具体如下: 文件路径:aoli/admin/Lib/Action/IndexAction.class.php 代码如下: <?php class IndexAction extends Action{ public function index(){ $this->display(); } public function to

Nginx隐藏index.php和Pathinfo模式配置例子_nginx

参照一下对应修改,重启nginx即可 复制代码 代码如下: server {        listen       80;        server_name www.leiyongbo.com www.leiyongbo.com;        root /usr/local/web;        index index.php;        error_page  400 /errpage/400.html;        error_page  403 /errpage/403.h

WordPress 伪静态规则配置(IIS/Apache/Nginx)

IIS伪静态规则 IIS 环境是 Windows 主机常用的服务器环境,新建一个 txt 文件,将下面的代码添加到文件中: [ISAPI_Rewrite] # Defend your computer from some worm attacks #RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O] # 3600 = 1 hour CacheClockRate 3600 RepeatLimit 32   # P

ThinkPHP在ACE上隐藏index.php的写法

阿里云官方帮助文档:https://help.aliyun.com/knowledge_detail/7596034.html?spm=5176.789091125.2.1.hxHknG 此文档给出的代码为: 5) ThinkPHP 常用规则, 实现 /index.php/aa/bb 优化成 /aa/bb , 记得要重启(不仅是重新发布)应用 (复制代码后注意格式对齐以及去掉多余空格, 否则会启动失败) rewrite: - url: \^(/(?\!(\.)).*)$ script: /ind

Apache域名绑定并隐藏index.php文件的方法

apache下绑定域名 方法如下: 1.找到apache安装目录下的httpd.conf并打开,在最后加上:  代码如下 复制代码 NameVirtualHost *:80 <VirtualHost *:80>  ServerName localhost  DocumentRoot C:/AppServ/www </VirtualHost> <VirtualHost *:80>  ServerName wWw.111cn.net  DocumentRoot C:/App

nginx中隐藏index.php文件配置方法

配置文件  代码如下 复制代码 /www/wdlinx/nginx-1.2.8/xxxx.com.conf #将默认的localhost块替换成  代码如下 复制代码 location ~ .php($|/) {             fastcgi_pass   127.0.0.1:9000;             fastcgi_index  index.php;             fastcgi_split_path_info ^(.+.php)(.*)$;           

iis/apache/nginx 提示No input file specified

(一)IIS Noinput file specified 方法一:改PHP.ini中的doc_root行,打开ini文件注释掉此行,然后重启IIS 方法二: 请修改php.ini 找到 ; cgi.force_redirect = 1 去掉前面分号,把后面的1改为0 即 cgi.force_redirect = 0 (二)apacheNo input file specified apache No input filespecified,今天是我们配置apache RewriteRule时出