【thinkphp问题栏】tp5.1重写URL,取消路径上的index.php

在Apache运行thinkphp5.1时,发现系统默认生成的.htaccess不生效。

首先先查看怎么修改伪静态

1、修改Apache的配置文件

在Apache的安装目录下,打开config/httpd.conf。

搜索rewrite.so,将前面的#删掉,表示开启URL重写功能

2、添加.htaccess

在public目录下,也就是index.php的同级目录下添加.htaccess(tp5.1自动生成)

3、添加代码

<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/$1 [QSA,PT,L]
</IfModule>

这是我们发现

这里用的是斜杠
'/'和'?'区别在于 URL 重写规则中的分隔符。
具体来说,这两种方式会影响到 PHP 脚本中 $_SERVER['PATH_INFO'] 或 $_SERVER['QUERY_STRING'] 的值。

  • 在第一段代码中,重写后的 URL 会将请求的路径部分作为 index.php 的 PATH_INFO 参数传递,如 index.php/path/to/resource。
  • 而在第二段代码中,重写后的 URL 会将请求的路径部分作为 index.php 的 QUERY_STRING 参数传递,如 index.php?path/to/resource。

这里我使用斜杠能正常运行

配置里系统自动生成的也是斜杠,但是却运行不了,反而修改为问号以后能运行,在博客逛了一圈也没搞明白,希望有懂的朋友能在评论区给出高见!

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值