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

如何用.htaccess规则将public设为共享服务器的站点根目录

解决共享服务器将public设为文档根的.htaccess配置问题

你的问题出在原.htaccess规则只处理了首页请求,其他路径没有被转发到public/index.php,导致Apache直接在项目根目录下查找对应文件,自然返回404。

替换项目根目录下的.htaccess为以下规则:

RewriteEngine On

# 排除实际存在的文件/目录(比如public里的静态资源)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 避免循环重写,排除已指向public的请求
RewriteCond %{REQUEST_URI} !^/public/
# 将所有请求转发到public/index.php,保留原始URI供路由处理
RewriteRule ^(.*)$ /public/index.php [L]

规则说明:

  • RewriteEngine On:开启URL重写模块
  • 前两个RewriteCond:如果请求的是实际存在的文件或目录(比如未来你在public里添加的css、js等静态资源),直接返回该资源,不触发重写
  • RewriteCond %{REQUEST_URI} !^/public/:避免对public目录本身的请求进行重写,防止出现循环重写问题
  • RewriteRule ^(.*)$ /public/index.php [L]:把所有符合条件的请求转发到public/index.php,[L]表示这是最后一条规则,停止后续匹配逻辑

配置完成后,所有请求都会经过你的PHP路由系统处理,和本地php -S localhost:8888 -t public的运行效果完全一致,点击/about、/notes等链接时,路由会正确匹配对应的控制器文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 16:53:26