首页 > 解决方案 > htaccess 将域和子域重定向到 https,包括 www

问题描述

我在使用 https 重定向 url 时遇到问题

  1. www.domain.com 到 domain.com
  2. www.name.domain.com 到 name.domain.com

域可以,但子域不行。

这是我的 .htaccess 代码:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,NC]
RewriteCond %{HTTP_HOST} ^www.(.+).example.com [NC]
RewriteRule ^(.*)$ http://%1\.example.com/$1 [R=301,NC]

我正在检查这个,但它不起作用:

# redirect www to none-www
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [QSA,R=301,L]

# redirect http to https
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [QSA,R=301,L]

标签: apache.htaccessredirectmod-rewritehttps

解决方案


你可以使用它:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,NC]
RewriteCond %{HTTP_HOST} ^www.(.+).example.com [NC]
RewriteRule ^(.*)$ https://%1.example.com/$1 [R=301,NC]

我对其进行了测试,它工作正常,但这取决于您对子域的设置,如果您的子域指向主目录,您需要将 htaccess 文件放在主目录中,但如果您的子域指向另一个目录,则必须放置您在所有目录中的 htaccess 文件,您可以在主机面板中检查它


推荐阅读