Slim 3移除URL中/public/路径的方法求助
我之前部署Slim 3项目时也碰到过完全一样的问题,给你几个按优先级排序的解决思路,一步步试下来应该能搞定:
优先检查服务器根目录配置
这是最常见的核心原因:托管服务器默认会把你的网站根目录指向项目的顶层文件夹,而不是Slim要求的public目录。你需要登录主机管理后台(比如cPanel、Plesk),找到对应域名的「文档根目录」设置,把路径修改为项目下的public文件夹(比如你的项目放在public_html/my-slim-site,就把文档根设为public_html/my-slim-site/public)。改完这个,大部分情况下不用动.htaccess就能直接通过site.com访问了。如果无法修改服务器根目录,添加根目录.htaccess转发
有些共享主机可能限制修改文档根,这时候在项目的顶层目录(public的父文件夹)新建一个.htaccess文件,写入以下内容:RewriteEngine On # 把根路径转发到public RewriteRule ^$ public/ [L] # 把所有非public开头的请求转发到public下 RewriteCond %{REQUEST_URI} !^/public/ RewriteRule ^(.*)$ public/$1 [L]保留
public目录里原有的.htaccess不变,这样用户访问site.com时,请求会被透明转发到public目录,地址栏不会显示/public/。确认服务器支持.htaccess和mod_rewrite
确保你的主机Apache配置中,针对网站目录的AllowOverride设置为All(如果是共享主机,一般默认开启,若没开需要联系主机商调整);同时确认mod_rewrite模块已经启用,这个模块是URL重写的基础,大部分主流主机都会默认开启。验证方式
改完设置后,记得清除浏览器缓存,用无痕模式访问site.com,检查是否正常加载页面,同时查看地址栏是否没有/public/后缀。
内容的提问来源于stack exchange,提问作者nielot

