2016-07-18 148 views
0

我有多個以.nl .com和.de結尾的域。對於每個域名我有不同的語言。我的文件位於.nl域。我想是所有域如下:簡單的htaccess mod重寫

這是我的主服務器上(.NL)

RewriteCond %{HTTP_HOST} !www.example.nl$ [NC] 
RewriteRule ^(.*)$ https://www.example.nl/$1 [L,R=301] 

這對於.DE

RewriteCond %{HTTPS} !=on 
RewriteRule ^(.*)$ https://www.example.de/$1 [L,R=301] 

RewriteCond %{HTTP_HOST} !www.example.de$ [NC] 
RewriteRule ^(.*)$ http://www.example.de/$1 [L,R=301] 
RewriteRule ^(.*)$ http://www.example.nl/$1 [P] 

這對於.COM

RewriteCond %{HTTPS} !=on 
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301] 

RewriteCond %{HTTP_HOST} !www.example.com$ [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301] 
RewriteRule ^(.*)$ http://www.example.nl/$1 [P] 

我嘗試了一切,但我無法弄清楚。

+0

首先將所有請求重寫爲https,這很容易。因爲所有內容都將在www.example.com中設置規則以使用[OR]:RewriteRule ^(。*)$ http://www.example.com/$1 [OR] RewriteRule ^(。*)$ http ://www.example.de/$1。我對[P]代理服務器不熟悉,但好像你沒有重定向到代理服務器,只是重定向到.nl域,一個標準的301 – Lizardx

回答

0
# This rule will redirect users from their original location, to the same location but using HTTPS. 
RewriteCond %{HTTPS} !=on 
RewriteRule ^/?(.*) https://www.example.nl/$1 [R=301,L] 

#primary site redirect 
RewriteCond %{HTTP_HOST} !^www\.example\.nl [NC] 
RewriteRule (.*) https://www.example.nl/$1 [R=301,L] 

我相信這是所有的需要,你可以看到,你先重定向不是HTTPS訪問https example.nl所有請求,然後重定向任何不www.example.nl到https://www.example.nl

如果我猜錯你需要[P],你可以用[P]代替我認爲的[R = 301,L],儘管我從來沒有處理過這種配置,所以我不能說當然,但它很容易測試。

https://wiki.apache.org/httpd/RewriteHTTPToHTTPS

這或多或少是我們對HTTPS使用。我認爲你會感到困惑,並且沒有意識到你需要知道的是不是example.nl/$1,沒有必要列出所有這些不是,因爲它們都不是example.nl/$1

注意以下,這些都是不二法則,都將被重定向:

https://example.nl 
https://www.example.com 
https://example.de 
https://www.example.de 

因爲這些都是沒有:

https://www.example.nl 

他們重定向。 (。*)表示一切,包括/。

有一個你需要知道與https的微妙的事情,你必須有所有域的所有版本的證書,這是萬維網/非www,或者你得到這些瀏覽器警報彈出窗口的任何初始域/當頁面初始加載時沒有證書支持的子域。例如,如果您沒有example.com的證書,但是您有www.example.com的證書(如果有url):http://example.com您會看到該瀏覽器警報,這對可用性非常不利,並且使其看起來就像它是一個騙子網站。

我不記得確切的處理順序,但我認爲這就是它的工作原理。