关于tp5隐藏index.php的解决方法

本文详细介绍如何在Apache环境下配置ThinkPHP5,实现index.php的隐藏。包括启用重写模块,设置AllowOverride,以及修改.htaccess文件的具体步骤。

Apache环境下,ThinkPHP5配置好以后,最初的访问方式可能是http://localhost/index.php/hello,其中hello是我们自己设置好的路由。

如果我们想把中间的index.php去掉,直接http://localhost//hello这样访问,可能会访问不了。那就需要配置一下。

一、首先我们要确保Apache启动加载重写模块

    在apache的配置文件httpd.conf中,查找到mod_rewrite.so,看是否加载,如果没有,就把前面的#去掉就好。

   LoadModule rewrite_module modules/mod_rewrite.so

二、设置AllowOverride

在apache的配置文件httpd.conf中,查找到Directory中的AllowOverride,把AllowOverride None改为AllowOverride All

以上配置完以后重启Apache,看是否可以访问http://localhost//hello,如果还是不可以正常访问,再进行下面的设置。

三、如果上面两步完成以后还是不可以隐藏 index.php 访问,那就再配置一下 .htaccess文件。

.htaccess文件在根目录中,tp5的话就在public文件夹中,没有的话就自己新建一个。

官方的配置如下,注意最后一句,红色显示的那一句。

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

如果此时还是不能访问就把红色的那句,按照下面的修改方法试试。

① RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]     修改为      RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]

就是index.php后面加一个?号。

② RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]     修改为  RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L] 

③RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]     修改为   RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]

网上的资料说这一个是phpstudy环境下的修改方法。

 

 

 

 

 

在ThinkPHP5框架中,若希望使用Nginx服务器配置来隐藏`public`目录和`index.php`入口文件,需要对Nginx的配置文件进行相应的URL重写设置。 ### Nginx 配置 确保你的网站根目录指向的是项目的`public`目录。然后在Nginx配置文件中添加以下内容: ```nginx server { listen 80; server_name yourdomain.com; # 替换为你的域名 root /path/to/your/project/public; # 替换为你的项目public目录路径 index index.php index.html index.htm; location / { # 如果请求的文件或目录不存在,则重写到index.php if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=/$1 last; break; } } # 处理PHP脚本 location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php-fpm.sock; # 根据实际环境调整 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # 禁止访问.htaccess文件 location ~ /\.ht { deny all; } } ``` ### 关键配置说明 - **root**:指定网站的根目录为`public`,这是ThinkPHP5推荐的入口目录[^3]。 - **location /**:这一段配置的作用是当用户访问的URL对应的文件或目录不存在时,将请求重写到`index.php`,从而实现隐藏入口文件的效果[^3]。 - **rewrite**:通过`rewrite`指令将所有不符合文件或目录的请求转发到`index.php`,并传递原始URL作为参数,确保路由可以正常工作。 - **location ~ \.php$**:处理以`.php`结尾的请求,将其交给PHP解析器处理。注意根据你的PHP运行环境(如PHP-FPM)调整`fastcgi_pass`的值。 完成以上配置后,重启Nginx服务使配置生效。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值