Apache2下子目录部署Symfony4应用出现重定向循环问题求助
解决Symfony 4在Apache子目录部署的配置问题
别慌,Apache配置刚开始接触确实容易懵,我一步步帮你捋清楚:
1. 先确认mod_rewrite模块是否启用
Symfony的路由功能依赖rewrite模块,先确保它已经开启:
sudo a2enmod rewrite sudo systemctl restart apache2
2. 修正你的VirtualHost配置
看起来你的配置没写完,而且如果是部署在子目录(比如访问路径是http://你的域名/rapp),配置需要调整。完整的rapp.conf应该是这样:
<VirtualHost *:80> ServerName your-domain.com # 替换成你的域名或者服务器IP DocumentRoot /var/www/html # 针对rapp子目录的核心配置 <Directory /var/www/html/rapp/public> AllowOverride All Require all granted # 确保Symfony的URL重写规则生效 <IfModule mod_rewrite.c> Options -MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php [QSA,L] </IfModule> </Directory> # 日志配置(可选但方便排查问题) ErrorLog ${APACHE_LOG_DIR}/rapp_error.log CustomLog ${APACHE_LOG_DIR}/rapp_access.log combined </VirtualHost>
这里要注意几个关键点:
- 如果用IP访问,
ServerName直接填你的服务器IP就行,比如192.168.1.100 DocumentRoot要设为/var/www/html而不是rapp的public目录,因为我们是在子目录/rapp下部署应用- 用了Apache 2.4的新语法
Require all granted替代旧的Order Allow,Deny,更规范且兼容新环境
3. 修复Symfony的文件权限
Sym需要给Symfony的缓存和日志目录赋予Apache进程的写入权限:
sudo chown -R www-data:www-data /var/www/html/rapp/var sudo chmod -R 775 /var/www/html/rapp/var
4. 重启Apache并测试配置
sudo systemctl restart apache2
之后访问http://你的域名/rapp,如果一切正常应该能看到Symfony的欢迎页面。如果还是出错,直接查看日志文件/var/log/apache2/rapp_error.log,里面会有具体的错误提示帮你定位问题。
另外,如果你的需求是把rapp作为根域名访问(比如http://你的域名直接打开应用),那DocumentRoot要设为/var/www/html/rapp/public,对应的VirtualHost配置可以改成:
<VirtualHost *:80> ServerName your-domain.com DocumentRoot /var/www/html/rapp/public <Directory /var/www/html/rapp/public> AllowOverride All Require all granted <IfModule mod_rewrite.c> Options -MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php [QSA,L] </IfModule> </Directory> ErrorLog ${APACHE_LOG_DIR}/rapp_error.log CustomLog ${APACHE_LOG_DIR}/rapp_access.log combined </VirtualHost>
内容的提问来源于stack exchange,提问作者Etshy
相关产品推荐
相关产品推荐

