Laravel项目public目录HTTPS访问重定向异常求助
解决Laravel HTTPS访问重定向异常问题
我来帮你排查这个重定向问题,从你的配置来看,主要问题出在Apache虚拟主机的DocumentRoot设置和重写规则的配合上,一步步来解决:
1. 修正Apache SSL虚拟主机配置
你的000-default-le-ssl.conf里DocumentRoot指向的是/var/www/html,但你的Laravel项目实际在/var/www/html/server目录下。这个错误的根目录配置会导致重写规则解析路径混乱,进而引发错误重定向。
修改虚拟主机配置文件,把DocumentRoot改成你的Laravel项目根目录:
<IfModule mod_ssl.c> <VirtualHost *:443> ServerAdmin webmaster@localhost # 修改这里的DocumentRoot DocumentRoot /var/www/html/server ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined ServerName www.sympies.net SSLCertificateFile /etc/letsencrypt/live/www.sympies.net/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.sympies.net/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf </VirtualHost> </IfModule>
注意:你原来的CustomLog指令里少了一个d,应该是combined,这个也顺手修正了。
2. 恢复Laravel public目录的.htaccess文件
你移除了public目录的.htaccess,但这个文件是Laravel处理路由重写的关键,没有它会导致路由无法正常工作,甚至可能间接引发重定向异常。从Laravel官方默认内容恢复这个文件即可,内容如下:
<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Send Requests To Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>
3. 验证mod_rewrite模块是否启用
确保Apache已经启用了mod_rewrite模块,执行以下命令:
sudo a2enmod rewrite sudo systemctl restart apache2
4. 清除浏览器缓存
因为之前的错误重定向可能已经被浏览器缓存,建议用无痕模式访问测试,或者手动清除浏览器的缓存和Cookie,避免旧的重定向规则干扰测试结果。
完成以上步骤后,你应该可以正常访问https://www.sympies.net/public(或者通过根目录https://www.sympies.net/自动转发到public),不会再出现错误的重定向了。
内容的提问来源于stack exchange,提问作者zheus walker
相关产品推荐
相关产品推荐

