Symfony部署至Cpanel后页面导航出现404错误求助
解决Symfony部署到Cpanel后页面404的问题
检查public目录内的.htaccess文件
Symfony的public目录默认自带处理路由的.htaccess文件,要是上传项目时漏传了或者内容不对,就会导致除首页外的其他页面404。确保public目录下有正确的.htaccess,内容参考如下:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI}::$0 ^(/.+)/(.*)::\2$ RewriteRule ^ - [E=BASE:%1] RewriteCond %{HTTP:Authorization} . RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L] RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^ - [L] RewriteRule ^ %{ENV:BASE}/index.php [L] </IfModule>
注:如果你的Symfony版本较低,入口文件是app.php,就把上面的index.php替换成app.php。
调整public_html目录下的.htaccess规则
你当前的主.htaccess规则存在路径解析问题,建议修改为:
<IfModule mod_rewrite.c> Options -MultiViews +FollowSymLinks RewriteEngine On # 将所有请求转发到public目录 RewriteCond %{REQUEST_URI} !^/public/ RewriteRule ^(.*)$ public/$1 [L] php_flag display_errors On php_value max_execution_time 300 php_value max_input_time 300 php_value max_input_vars 1000 php_value memory_limit 1G php_value post_max_size 8M php_value session.gc_maxlifetime 1440 php_value session.save_path "/var/cpanel/php/sessions/ea-php81" php_value upload_max_filesize 2M php_flag zlib.output_compression Off </IfModule>
主要添加了+FollowSymLinks确保符号链接正常解析,同时去掉了/public/$1开头的斜杠,避免路径冲突。
确认Cpanel的mod_rewrite模块已启用
登录Cpanel,找到Apache Modules或Select PHP Version(部分主机在这个选项里),检查mod_rewrite是否勾选启用,若未启用则勾选后保存设置。
检查文件和目录权限
确保以下权限设置正确:
- public目录权限设为
755 - public下的index.php(或app.php)权限设为
644 - 项目根目录的var目录权限设为
775(保证Symfony能写入缓存和日志)
清除Symfony缓存
如果有服务器SSH权限,进入项目根目录执行以下命令:
php bin/console cache:clear --env=prod php bin/console cache:warmup --env=prod
没有SSH权限的话,手动删除var/cache/prod目录下的所有文件,再刷新页面即可。
内容的提问来源于stack exchange,提问作者maaha
相关产品推荐
相关产品推荐

