如何隐藏地址栏中的PHP页面?如何用PHP改写指定URL?
这俩问题核心都是URL重写的事儿,我给你分情况讲清楚怎么实现:
1. 隐藏地址栏中的PHP页面
最常用的方案是利用Web服务器的URL重写功能,主流的Apache和Nginx配置方式略有不同,另外也可以通过单入口文件的思路统一处理:
Apache服务器配置
- 首先确认Apache已经开启了
mod_rewrite模块(多数主机默认开启,若未开启需在httpd.conf里取消LoadModule rewrite_module modules/mod_rewrite.so的注释) - 在你的
project_Folder/dist/目录下创建.htaccess文件,写入以下规则:
RewriteEngine On # 通用规则:隐藏所有PHP扩展名(比如访问test会映射到test.php) RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php [L] # 针对单个页面:让访问dist/根路径时实际加载hello.php RewriteRule ^$ hello.php [L]
这样设置后,地址栏里就不会显示.php后缀了。
Nginx服务器配置
- 修改你的Nginx站点配置文件(比如
/etc/nginx/conf.d/your_site.conf),在server块中添加:
location /project_Folder/dist/ { # 隐藏PHP扩展名 if (!-e $request_filename) { rewrite ^/(.*)$ /$1.php last; } # 访问dist/时指向hello.php location = /project_Folder/dist/ { rewrite ^ /project_Folder/dist/hello.php last; } }
配置完成后重启Nginx服务生效。
额外提示:单入口模式
如果你的项目是基于框架开发的,推荐用单入口(比如index.php)统一处理请求,把hello.php的逻辑整合到入口文件中,再通过路由规则映射到对应的业务,这种方式更易于维护。
2. 将指定PHP URL转换为不带文件名的路径
这个需求可以通过重定向+重写组合实现,确保不管用户输入哪个地址,最终地址栏都显示干净的路径:
Apache补充配置
在之前的.htaccess里再加一条规则,把直接访问hello.php的请求301重定向到dist/:
# 永久重定向hello.php到dist/根路径 RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)hello\.php\ HTTP/ RewriteRule ^(.*)hello\.php$ /$1 [R=301,L]
Nginx补充配置
在对应的location块里添加重定向规则:
# 永久重定向hello.php到dist/根路径 location = /project_Folder/dist/hello.php { return 301 /project_Folder/dist/; }
这样设置后,用户访问http://11.111.11.11/project_Folder/dist/hello.php会自动跳转到http://11.111.11.11/project_Folder/dist/,且服务器实际加载的是hello.php的内容。
内容的提问来源于stack exchange,提问作者ki26basan
相关产品推荐
相关产品推荐

