Apache2环境下Shopware6站点www重定向至非www失效求助
Shopware6部署在Apache2下www域名重定向到非www域名解决方案
问题原因排查
- 首先确认
mod_rewrite模块已启用,执行命令:sudo a2enmod rewrite - 原配置中的RewriteRule正则匹配规则错误,仅匹配单个路径字符,导致重定向路径异常、多余斜杠等问题
- 未同时覆盖HTTP 80端口和HTTPS 443端口的www请求场景
- 浏览器旧重定向缓存导致测试结果异常
正确配置方案
1. 端口80 VirtualHost配置
所有HTTP请求直接跳转至HTTPS非www域名,减少二次跳转:
<VirtualHost *:80> ServerName vanparysbakery.emakers.be ServerAlias www.vanparysbakery.emakers.be RewriteEngine On RewriteRule ^(.*)$ https://vanparysbakery.emakers.be/$1 [L,R=301,NE] ServerSignature Off </VirtualHost>
2. 端口443 VirtualHost配置
单独处理HTTPS下的www域名请求跳转:
<VirtualHost *:443> Protocols h2 h2c http/1.1 LoadModule ssl_module /usr/lib64/apache2-prefork/mod_ssl.so DocumentRoot /var/www/bakery/public ServerName vanparysbakery.emakers.be ServerAlias www.vanparysbakery.emakers.be <Directory /var/www/bakery/> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> SSLEngine on SSLProtocol all -SSLv2 -SSLv3 SSLCipherSuite HIGH:!aNULL:!MD5:!ADH:!DH:!RC4 SSLHonorCipherOrder on Include /etc/letsencrypt/options-ssl-apache.conf SSLCertificateFile /etc/letsencrypt/live/vanparysbakery.emakers.be/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/vanparysbakery.emakers.be/privkey.pem # HTTPS下www跳转非www规则 RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.vanparysbakery\.emakers\.be [NC] RewriteRule ^(.*)$ https://vanparysbakery.emakers.be/$1 [L,R=301,NE] </VirtualHost>
生效步骤
- 验证配置语法正确:
sudo apache2ctl configtest - 重启Apache服务:
sudo systemctl restart apache2 - 测试时使用无痕浏览器模式,或清除浏览器缓存、本地DNS缓存,避免旧的重定向规则缓存影响测试结果。
建议将重定向规则统一放在VirtualHost配置中,优先级高于站点目录下的.htaccess,可避免Shopware自带的.htaccess规则覆盖自定义重定向逻辑。
内容的提问来源于stack exchange,提问作者Umar Zahid
相关产品推荐
相关产品推荐

