如何解决.htaccess中HTTPS重定向与SPA跳转规则冲突问题
解决方案
两段配置冲突的核心原因是重写规则顺序错误、重复声明RewriteEngine On导致已有规则被重置,你只需将HTTPS重定向规则放在SPA路由适配规则之前、合并重复配置即可同时生效,完整配置如下:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # HTTPS强制跳转规则 RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] # 替换下方的subdomain.domain.com为你实际使用的子域名 RewriteCond %{HTTP_HOST} ^subdomain\.domain\.com$ RewriteRule ^/?$ https://subdomain.domain.com/ [R=301,L] # Vue history模式适配规则 RewriteRule ^index\.html$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.html [L] </IfModule>
注意事项
- 跳转类规则必须放在资源匹配类规则之前,确保用户先跳转至HTTPS站点,再执行SPA路由回退逻辑
- 仅声明一次
RewriteEngine On和RewriteBase /,避免重复声明导致已有规则被重置 - 配置修改后如果没有立即生效,可以清空浏览器缓存再测试,301重定向会被浏览器长期缓存
内容的提问来源于stack exchange,提问作者Muhammad Kazim Sadiq
相关产品推荐
相关产品推荐

