.htaccess - 通过 .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 文件中做错了什么?
解决方案
推荐阅读
- oracle-apex - APEX 顾问错误 - 19.2
- r - 我将如何扩展变量数据框以表示 R 中的交互网络?
- swift - “T”类型的值没有使用根类型“T”的键路径的动态成员“对象”
- python - numpy 切片在函数中表现不佳
- .net - 禁用/卸载 IE11 时,WebBrowser 控件不会在本机浏览器窗口中打开 URL
- javascript - 贝宝稍后按钮未显示
- swift - 如何访问 swiftui 组件中线性渐变的背景颜色
- c++ - 为什么 .size() 不适用于 C++ 中的向量?
- android - Admob 没有任何报告活动
- javascript - 如何创建console.log esk 打字效果