使用.htaccess配置美化URL的PHP项目部署出现404报错求助
部署问题解决方案
1. 调整Plesk子域名文档根目录(优先推荐)
该配置方案安全性更高,可避免应用逻辑代码被外部直接访问:
- 进入Plesk Obsidian面板,找到
dev.example.org子域名的管理页,依次打开「主机与DNS」-「Apache与nginx设置」 - 将「文档根目录」修改为项目下的
/public文件夹路径并保存 - 将原项目根目录的
.htaccess文件移动到/public文件夹内,修改内容为:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
2. 保留原目录结构的适配方案
如果你需要保持子域名根目录指向项目根目录的配置,按以下步骤调整:
- 进入子域名的「Apache与nginx设置」页,在「附加Apache指令」的HTTP、HTTPS配置块分别添加
AllowOverride All,确保.htaccess规则可被加载 - 确认Apache的
mod_rewrite模块已启用,Debian系统可执行命令a2enmod rewrite && systemctl restart apache2开启
3. 通用配置校验
以上两种方案都需要做以下检查:
- 在附加Apache指令中添加
AcceptPathInfo On,确保index.php/xxx格式的路径可被正常解析 - 如果服务器开启了Nginx反向代理,可暂时关闭「静态文件由Nginx处理」的选项,或添加对应Nginx重写规则,避免请求被Nginx拦截返回404
- 校验项目文件权限:文件夹权限设置为755,文件权限设置为644,文件所属用户/组与子域名运行的Web用户保持一致
- 若仍报错,检查对应PHP版本的
php.ini配置,确认cgi.fix_pathinfo = 1
内容的提问来源于stack exchange,提问作者Anselme SERI
相关产品推荐
相关产品推荐

