最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Apache URL 重写隐藏 index.php 如何做
时间:2026-08-06 14:02:49 编辑:袖梨 来源:一聚教程网
Apache隐藏index.php需正确配置:1.启用mod_rewrite模块;2.设置AllowOverride All放开.htaccess权限;3.将含RewriteEngine On等规则的.htaccess置于public目录;url_model=2仅影响URL生成,不决定重写生效。
Apache 隐藏 index.php 不是 ThinkPHP 或其他框架“关掉”就能生效的功能,而是必须由 Apache 正确转发所有非静态请求到 index.php 入口文件。配置不到位,页面直接 404 或报 “No input file specified”。核心就三件事:启用模块、放开权限、写对规则。
确认并启用 mod_rewrite 模块
这是前提,没它整个重写流程根本走不起来:
- 打开 Apache 的
httpd.conf(路径通常为/etc/httpd/conf/httpd.conf或C:Apache24confhttpd.conf) - 查找
#LoadModule rewrite_module modules/mod_rewrite.so,删掉开头的#取消注释 - 保存后重启 Apache:
sudo systemctl restart httpd(Linux)或通过服务管理器重启(Windows) - 可访问
phpinfo()页面,搜索 “Loaded Modules”,确认mod_rewrite在列表中
设置 AllowOverride All
.htaccess 文件能否生效,全看这个配置:
- 在
httpd.conf或虚拟主机配置(如vhost.conf)中,找到<Directory>块,通常是 根目录或public/目录 - 把里面的
AllowOverride None改成AllowOverride All - 如果用了多个
<Directory>,每个都要检查并修改,不能漏 - 确保该目录下用户(如
www-data或apache)有读取.htaccess的权限
放置正确的 .htaccess 规则
文件必须放在 index.php 所在目录(通常是 public/),内容推荐用这个兼容性好、适配 TP6/TP8 的版本:
<IfModule mod_rewrite.c>RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php?s=$1 [QSA,L]</IfModule>
说明:
-
!-d和!-f确保真实存在的文件(如css/app.css)和目录不被重写,避免静态资源 404 -
s=$1把原始路径传给框架的$_GET['s'],ThinkPHP 默认识别这个参数 - 不用
PATH_INFO方式(如index.php/$1),避开cgi.fix_pathinfo和AcceptPathInfo的兼容性坑 - Windows 下创建
.htaccess可先新建文本文件,另存为时选择“所有文件”,文件名填.htaccess(注意开头的点)
检查 ThinkPHP 的 URL_MODEL(可选但建议)
虽然现代 ThinkPHP(6+)已弱化该配置,但若项目仍沿用旧版或自定义路由,建议确认:
- 在
config/app.php或conf.php中,'url_model' => 2(表示重写模式) - 实际起作用的是 Apache 规则,
url_model只影响框架内部 URL 生成逻辑,不影响重写本身
相关文章
- 鹅鸭杀超级金水铃模式怎么玩 08-07
- 牧场物语风之繁华集市生日日期怎么看 08-07
- 口袋新旅途如何捕捉颓颓鹰 08-07
- DNF狄瑞吉版本女漫游加点攻略 08-07
- 鹅鸭杀士兵怎么玩 08-07
- DNF狄瑞吉版本协战师加点攻略 08-07