2011-08-24 294 views
1

也許有人可以幫助我。我需要一個像這樣的重寫規則:從http://http://www.重定向到https://www.mydomainhttp://和http:// www。到https:// www

例如,某人在mydomain.com中鍵入他將被重定向到https://www.mydoamin,如果他鍵入www.mydomain.com,他將被重定向到https://www.mydomain。因此,如果有人類型mydomain.comwww.mydomain.com他應該得到重定向到https://www.mydomain

而且如果可能的話重定向到一個子像login.mydomain.com - >https://login.mydomain.com

一切HTTPS。

回答

3

這裏就是你可以把什麼.htaccess文件

RewriteEngine On 
SSLOptions +StrictRequire 
SSLRequireSSL 
RewriteCond %{HTTPS} !=on 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L] 
+0

我認爲@如果原始URL以https:開頭,@ BookOfZeus的解決方案將不會重寫爲規範主機名。如何''RewriteCond%{HTTPS}!= on' – shr

+0

好趕上!謝謝 –

+0

啊,對不起。我錯過了一個更多的條件。也許我們需要將http-to-https重寫和主機名稱規範化的規則集分開。 'RewriteCond%{HTTPS}!= on''RewiteRule^/(。*)$ https://www.mydomain.com/$1 [R = 301,L]''RewriteCond%{HTTP_HOST}!^ www \ .mydomain \ .com''RewriteRule^/(。*)$ https://www.mydomain.com/$1 [R = 301,L]' – shr

2

無論你的代碼不工作。

目前,我有一個個人的作品,但僅適用於HTTP(不帶「S」)

# http to www # 
RewriteCond %{HTTP_HOST} !^www\..* [NC] 
RewriteCond %{HTTP_HOST} !^.*\..*\..* [NC] 
RewriteRule ^(.*)   http://www.%{HTTP_HOST}/$1 [R=301,L] 
4

好吧,我發現了一個小錯字在我最後的評論來解決,並想知道哪些部分是錯的,如果這些配置不工作您預期的那樣:

RewriteCond %{HTTPS} !=on 
RewriteRule .* https://www.mydomain.com%{REQUEST_URI} [R=301,L] 

RewriteCond %{HTTP_HOST} !^www\.mydomain\.com 
RewriteRule .* https://www.mydomain.com%{REQUEST_URI} [R=301,L] 

以上由兩個部分組成:

  1. 如果URL中沒有用HT開始tps://,重定向到https://www.mydomain.com/,無論主機名或其他地址如何
  2. 如果url主機名不是www.mydomain.com,重定向到https://www.mydomain.com/,無論如何url爲http://或https://

更新: 最後,有機會自己測試。由於某種原因,匹配規則無法按預期工作。以%{REQUEST_URI}替換通配符($ 1),並將模式^ /(。)$ as。

相關問題