【发布时间】:2018-06-02 19:46:09
【问题描述】:
我知道这里有无数提供的.htaccess-solutions,但没有一个重定向到https,www 仅用于主域,但https 没有www 仅用于子域.基于this问题和php的解决方案,现在我想修改我的.htaccess文件以满足以下需求。
主域:
- 将
http重定向到https - 将
non-www重定向到www - (对于主域:
www是需要并且应该出现)
子域:
- 将
http重定向到https - 将
www重定向到non-www - (对于子域:
www不需要并且应该不出现)
我目前的做法是这样的:
RewriteEngine on
# Ensure https for all domains (main- and subdomains):
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# Redirect non-www to www only for main domain, but not for subdomains:
RewriteCond %{HTTP_HOST} ^(domain\.com)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L]
# Redirect www to non-www only for subdomains:
RewriteCond %{HTTP_HOST} ^(www\.)?subdomain\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://subdomain.domain.com%{REQUEST_URI} [R=301,L,NE]
- 我认为子域有错误?
- 我不明白第一个命令中的
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}部分:当访问者进入没有https的子域时,此命令不会将访问者发送到主域吗?或者{HTTP_HOST}是否已经包含可能的子域?
评论:子域的内容与主域完全不同(可能是 private.website.com 或 cloud.website.com 例如)。它不仅仅是一种不同的语言。因此,通过浏览器源或 CMS 创建内部转发似乎没有用。只能通过.htaccess-entry 执行。
【问题讨论】:
标签: .htaccess redirect https dns subdomain