如何配置.htaccess让Apache2所有请求转至指定PHP文件
解决.htaccess配置问题:让所有请求转发到index.php
修改后的.htaccess配置
<IfModule mod_rewrite.c> Options -Indexes RewriteEngine on RewriteRule ^(.*)$ index.php?path=$1 [NC,L,QSA] </IfModule>
关键修改说明
- 移除文件/目录存在性判断:删掉原配置中的
RewriteCond %{REQUEST_FILENAME} !-f和RewriteCond %{REQUEST_FILENAME} !-d两行。这两行原本仅在请求的文件/目录不存在时才触发重写,移除后所有请求(无论目标路径是否对应实际文件/目录)都会被转发到index.php。 - 修正路径指向:将
RewriteRule中的/index.php改为index.php,因为.htaccess放在web/目录下,使用相对路径能确保指向当前目录的index.php,避免路径跳转错误。
效果说明
修改后,所有请求(包括myweb.com/.env、myweb.com/test.txt、myweb.com/test/a这类路径)都会被统一转发到web/index.php,由你的框架处理:
- 自定义路由(如
/test/a)可通过框架的路由规则正常匹配返回响应; - 敏感文件(如
.env)不会被直接返回,而是由框架根据逻辑做权限控制或返回404,避免泄露信息。
内容的提问来源于stack exchange,提问作者Siro
相关产品推荐
相关产品推荐

