htaccess:将所有子域重定向到主https www域

时间:2016-12-07 13:56:34

标签: apache .htaccess redirect mod-rewrite

我坚持使用htaccess重定向,混合了一些关于htaccess重定向的答案[1] [2]

我的目标是将每个子域(不是www)重定向到我的主域(从https://www开始。),保持Request_URI(如指定的文件夹)不变。

以下是我所做的:

->where()

此配置执行重定向(强文本是错误的重定向):

交换来实现 RewriteEngine On RewriteCond %{HTTP_HOST} ^(.+)\.mydomain\.fr$ [NC] # OR : RewriteCond .* ^(.+)\.%{HTTP_HOST}%{REQUEST_URI}$ [NC] RewriteCond %{HTTP_HOST} !^www\.mydomain\.fr$ [NC] RewriteRule ^ https://www.mydomain.fr%{REQUEST_URI} [L,R=301,QSA]

RewriteCond %{HTTP_HOST} !^www\.mydomain\.fr$ [NC]给了我错误的重定向错误。 我的想法是检查HTTP_HOST是否格式为https://www.mydomain,如果没有重定向到带有REQUEST信息的好URL  RewriteCond %{HTTP_HOST} !^https://www\.mydomain\.fr [NC]

为什么重定向错误? 我是否必须编写2组条件和规则来检查子域,然后是HTTPS? (我目前正在尝试使用一个规则和几个条件进行重定向,这可能不是最佳做法)

编辑:我的目标是进行这些重定向:

提前感谢任何答案/想法。

编辑2:

我已经在THIS问题上尝试了Larzan的答案,除了一件事情之外我似乎做了我想做的事:如果我的浏览器中的网址类似于RewriteRule ^ https://www.mydomain.fr/%{REQUEST_URI},则浏览器会显示我是一个关于安全性的大红色警告,我必须接受风险,然后重定向到https://foobar.mydomain.fr。我该如何删除此警告?

https://www.mydomain.fr

1 个答案:

答案 0 :(得分:0)

用这条规则替换你的两条规则:

RewriteEngine On

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\.mydomain\.fr$  [NC]
RewriteRule ^ https://www.mydomain.fr%{REQUEST_URI} [L,R=301,NE]

在完全清除浏览器缓存后测试更改。