首页 > 解决方案 > 通过 .htaccess 文件将所有子域重定向到 https

问题描述

预计 Google Chrome 更改将于 7 月 1 日生效,我想确保我管理的网站上的所有文件都重定向到 https。这是一个 Apache 服务器,我在文件中已经有以下内容(使用假域名进行演示):

RewriteEngine on

RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^example.org$ [OR]
RewriteCond %{HTTP_HOST} ^www.example.org$
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^/?$ "https\:\/\/www\.example\.com\/" [R=301,L]

正如您在上面看到的,有一个从我停放的域 (example.org) 到我正在管理的主域 (example.com) 的重定向。除此之外,我想要的只是网站的所有页面,包括所有子域,以重定向到每个页面的 https 版本。例如,当有人访问http://webmail.example.com我希望他们访问https://webmail.example.com或者当管理员访问http://cpanel.example.com时,他们应该被重定向到https://cpanel.example.com

对于不在本网站子域中的链接,我喜欢在 URL 中保留 www。例如,如果有人访问http://example.com/folder/file,我希望他们访问https://www.example.com/folder/file

上述代码位于根文件夹的 .htaccess 文件中。我是否需要在每个子域的文件夹中都有一个 .htaccess 文件才能使其正常工作?还是我只是在现有的 .htaccess 文件中做错了什么?

标签: .htaccesssslredirecthttpshttp-redirect

解决方案


推荐阅读