Laravel共享主机:如何将根目录重写至public并重定向/public回根目录?
Laravel共享主机:重定向/public请求至根目录方案
针对你已完成根目录请求重写至public,但仍可直接访问domain.com/public的问题,以下是具体解决方法:
Apache环境(多数共享主机默认)
在网站根目录的.htaccess文件中,先添加重定向规则,再保留原重写规则,完整配置如下:
RewriteEngine On # 重定向所有/public开头的请求到根目录对应路径(永久重定向,SEO友好) RewriteRule ^public/(.*)$ /$1 [R=301,L] # 将根目录请求转发至public目录处理 RewriteCond %{REQUEST_URI} !^/public/ RewriteRule ^(.*)$ /public/$1 [L]
说明:
- 测试阶段可临时将
R=301改为R=302(临时重定向),避免浏览器缓存影响测试结果 L表示当前规则处理完成后停止后续规则匹配- 确保
public目录下的默认Laravel.htaccess保持不变,该文件负责处理Laravel路由的内部重写
Nginx环境(若共享主机支持)
若主机使用Nginx,在站点配置文件中添加以下规则:
# 重定向/public请求到根目录 location ^~ /public/ { rewrite ^/public/(.*)$ /$1 permanent; } # 根目录请求转发至public目录 location / { try_files $uri $uri/ /public/index.php?$query_string; }
注意事项
- 确认Apache已启用
mod_rewrite模块(多数共享主机默认开启) - 修改配置后需清除浏览器缓存再测试,避免旧缓存干扰
- 若共享主机限制了
.htaccess权限,可联系主机服务商确认相关设置
内容的提问来源于stack exchange,提问作者Gavo
相关产品推荐
相关产品推荐

