我卡住使用htaccess重定向,混合一些答案[1][2]關於htaccess重定向。htaccess:重定向所有子域到主https網域
我的目標是將每個子域(不是www)重定向到我的主域(從https://www開始),保持Request_URI(如指定的文件夾)原樣。
這裏是我做了什麼:
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]
這個配置不重定向(強文是壞的重定向):
- test.mydomain.fr =>https://www.mydomain.fr
- 測試。 mydomain.fr/foo =>https://www.mydomain.fr/foo
- mydomain.fr =>https://www.mydomain.fr
- https://foo.mydomain.fr =>https://foo.mydomain.fr
- www.mydomain.fr =>http://www.mydomain.fr
交換 RewriteCond %{HTTP_HOST} !^www\.mydomain\.fr$ [NC]
到
RewriteCond %{HTTP_HOST} !^https://www\.mydomain\.fr [NC]
給我壞重定向的錯誤。 我的想法是要檢查HTTP_HOST是格式https://www.mydomain,如果不是重定向到與請求信息的良好URL RewriteRule^https://www.mydomain.fr/%{REQUEST_URI}
爲什麼會有不好的重定向? 我是否必須編寫2組條件和規則來首先檢查子域,然後HTTPS? (目前,我試圖讓使用一個規則和幾個條件重定向,這可能不是最好的做法)
編輯:我的目標是讓這些重定向:
- test.mydomain.fr =>https://www.mydomain.fr
- test.mydomain.fr/foo =>https://www.mydomain.fr/foo
- mydomain.fr =>https://www.mydomain.fr
- https://foo.mydomain.fr =>https://www.mydomain.fr
- www.mydomain.fr =>https://www.mydomain.fr
在此先感謝您的任何答案/想法。
編輯2:
我試過在THIS問題Larzan答案,這似乎做我想做的只是一件事是什麼:如果我在我的瀏覽器的網址是一樣的東西https://foobar.mydomain.fr
,瀏覽器顯示了我關於安全的大紅色警告,我必須接受風險,那麼重定向到https://www.mydomain.fr
。我如何刪除此警告?
#First rewrite any request to the wrong domain to use the correct one (here www.)
RewriteCond %{HTTP_HOST} !^www\.mydomain
RewriteRule ^(.*)$ https://www.mydomain.fr%{REQUEST_URI} [L,R=301]
#Now, rewrite to HTTPS:
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
「https://foo.mydomain.fr => https:// foo.mydomain.fr」是什麼意思?兩個URL都是一樣的,什麼都沒有發生? –
我編輯了我的問題來添加我想要的重定向。 @DusanBajic:我想壓制子域foo。 – Marcassin
@anubhava:我想去嘗試httpS而不是http – Marcassin