TP6访问路径index.php怎么去掉

伪静态就是在访问url时隐藏index.php

例:

https://domains.com/index.php/admins/login/login

变成:

https://domains.com/admins/login/login

===》使用Apache时  ============================

一、修改Apache配置文件

首先修改【httpd.conf】配置文件;然后去掉【#】,使rewrite模块生效,并将None改为All。

        1、LoadModule rewrite_module modules/mod_rewrite.so 去掉前面#,使rewrite 模块生效,没有这一行就自己另起一行添加上去

        2、将httpd.conf中所有AllowOverride None 将None改为 All

二、官网给的解决方案: 解决重写URL,省去index.php问题

         tp6官网文档public目录中给的 .htaccess 文件内容如下

<IfModule mod_rewrite.c>
    Options +FollowSymlinks -Multiviews
    RewriteEngine on

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]  #这一行踩坑,将这一行换成下面的
</IfModule>

正确的写法应该如下,官网给的最后一行配置错误

<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]  #这才是对的,改成这句保存即可
</IfModule>

另一写法

<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]  #直接在index.php后面加一个 ?
</IfModule>

把 public 目录 .htaccess  文件中的 index.php后面加个问号就可以了 ,
index.php?  就这样

===》使用Nginx时  ============================

项目根目录(public)下新建nginx.htaccess文件

location /  {
  if  (!-e $request_filename){
    rewrite ^(.*)$ /index.php?s=$1 last;  break;
  }
}

或者使用完整一点的,推荐的写法

location ~* (runtime|application)/{
	return 403;
}
location / {
	if (!-e $request_filename){
		rewrite  ^(.*)$  /index.php?s=$1  last;   break;
	}
}

猜你喜欢

转载自blog.csdn.net/ITMyFavorite/article/details/130096123