如何用.htaccess为Angular 5网站实现强制SSL及www域名跳转?
实现Angular 5网站强制SSL+WWW域名跳转的.htaccess配置方案
我来帮你搞定这个配置!要让所有域名变体(比如http://example.com、example.com、http://www.example.com等)都强制跳转到https://www.example.com,同时不影响Angular路由的正常工作,你只需要把SSL和域名重定向规则放在原有Angular路由规则的前面即可——因为Apache的Rewrite规则是从上到下匹配执行的,先完成重定向再处理Angular的单页路由。
下面是完整的.htaccess配置代码:
RewriteEngine on # 强制跳转至HTTPS + www域名 RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} !^www\.example\.com$ RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L] # Angular路由规则(保留原有逻辑) RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^(.*) /index.html [NC,L]
关键规则说明:
RewriteCond %{HTTPS} off [OR]:判断当前请求是否为HTTP(非HTTPS)RewriteCond %{HTTP_HOST} !^www\.example\.com$:判断当前访问的域名是否不是www.example.com(注意域名里的.要加反斜杠转义)RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]:满足上面任一条件时,将请求永久重定向(R=301,对SEO友好)到https://www.example.com,并保留原请求路径($1捕获的内容);L表示停止执行后续规则,避免和Angular路由冲突
注意事项:
- 请把配置中的
example.com替换成你自己的实际域名 - 确保你的服务器已经配置好了SSL证书,否则HTTPS访问会报错
- 如果测试时跳转不生效,可以尝试清空浏览器缓存(因为301重定向会被浏览器缓存)
内容的提问来源于stack exchange,提问作者Gaurav Singh
相关产品推荐
相关产品推荐

