如何解决使用 htaccess 将 http:// 和 http://www 重写/重定向到 https://
我是编辑 htaccess 文件的新手。我想做的是: 重写/重定向特定的子域,例如 subdomain1、subdomain2 等来自:
(iterate (>>= nextFrameR) initialMap) :: [IO Map]
致:
https://www.subdomain.example.com
http://www.subdomain.example.com
http://subdomain.example.com
我已将以下代码从其他问题拼凑起来,但似乎不起作用。 谁能解释我做错了什么并帮助我修复代码。
https://subdomain.example.com
解决方法
仅规范化(“重定向”)特定子域 ...
https://www.subdomain.example.com
http://www.subdomain.example.com
http://subdomain.example.com
致:
https://subdomain.example.com
您需要在 .htaccess
文件顶部附近执行以下操作:
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(subdomain\.example\.com) [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
第三个条件确保它仅适用于特定的子域。
要使其适用于多个子域(假设 no-www 对所有子域都是规范的),那么您可以只修改第三个条件来确定它应该应用于的子域。例如:
RewriteCond %{HTTP_HOST} ^(?:www\.)?((?:subdomain1|subdomain2|subdomain3)\.example\.com) [NC]
使用 302(临时)重定向进行测试以避免潜在的缓存问题。您需要在测试前清除浏览器缓存。
RewriteCond %{HTTPS} !on
RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$ [NC]
RewriteRule .? https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
这是正确的,但它没有针对 HTTPS 或 www 子子域。此外,检查 %{HTTPS} !on
和 %{SERVER_PORT} ^80$
实际上是一回事。
您可以使用以下内容:
RewriteEngine on
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+) [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R,L]
这会将所有子域从 http://www
重定向到 https://
。
对于 subdomain.example.com
,您可以使用以下内容:
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com [NC]
RewriteRule ^ https://subdomain.example.com%{REQUEST_URI} [R,L]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。