我坚持使用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
答案 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]
在完全清除浏览器缓存后测试更改。