You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.htaccess配置RewriteRule无301重写请求到public目录index.php问题

原有配置失效原因

你配置的RewriteCond %{REQUEST_URI} ^/public/ [NC]条件要求请求路径必须以/public/开头才会触发后续重写规则,直接访问站点根路径或者其他非/public开头的路径都不会命中规则,因此不会转发到public目录,仍然展示根目录索引页。

正确配置方案

方案1:仅在根目录维护.htaccess

RewriteEngine On

# 所有请求内部重写到public目录,无外部跳转,地址栏URL不变
RewriteRule ^(.*)$ /public/$1 [L]

# 若public下对应文件/目录不存在,转发到index.php处理路由
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^public/(.*)$ /public/index.php?url=$1 [QSA,L]

方案2:拆分配置(更推荐,符合主流PHP框架规范)

  1. 根目录.htaccess仅做目录转发:
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
  1. 在public目录下新建.htaccess处理路由转发:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

生效校验项

  • 确认Apache已开启mod_rewrite扩展
  • 确认站点VirtualHost配置中AllowOverride参数设置为All,允许.htaccess文件生效
  • 若不需要保留public下静态资源直接访问能力(所有请求必须走index.php),删除对应配置中的两条RewriteCond规则即可

内容的提问来源于stack exchange,提问作者Bert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 20:27:04