2011-12-07 69 views
0

我基本上了解了Apache的配置或多或少都是在Apache手冊的指導下計算出來的,但是目前我的重定向規則有點複雜,所以我希望你能幫助我。Apache Rewrite Rules

我要實現以下目標:

  • 通過http每個傳入的請求應該被重定向到使用https。
  • 除定義爲虛擬主機(m.domain.tld和content.domain.tld)之外的每個子網都應該重定向到domain.tld。
  • 我寧願保留「/」後面的所有內容,但這不是必需的。

例如:

  • HTTP:/domain.tld→HTTPS:/domain.tld
  • HTTP:/whatever.domain.tld→HTTPS:/domain.tld
  • HTTPS :/whatever.domain.tld→HTTPS:/domain.tld
  • HTTP:/m.domain.tld→HTTPS:/m.domain.tld

我掌握了一些基本的工作使用這個非常基本的規則,但它只適用於通過http傳入的請求,因此不會重新格式化通過https傳入的不存在的子網。

<VirtualHost _default_:80> 
    Redirect permanent/https://domain.tld/ 
</VirtualHost> 

希望你能幫忙或者指點我一個明確的指導方向(還沒有派出一個)。

+0

開頭:https是從不同於http:443 vs 80(默認公共端口號)的端口提供的。強制HTTPS - 這裏已經有很多這樣的主題 - 只是搜索。子域名相同:搜索「規範域名」。給你的案例準確的規則沒有任何問題..但由於這種問題幾乎每隔兩天就會被問到,你應該沒有問題在這裏找到答案。尋找他們,並更新您的帖子與任何具體問題,你仍然可能有。 – LazyOne

+0

真的很抱歉,我討厭自己是「那些傢伙之一」,他們從來沒有讀過,總是問。我問的原因是因爲在看了像stackoverflow這樣的網站幾天後,我無法真正掌握規則。但我正在嘗試輸入。我只是有點害怕製作具有明顯(安全)缺陷的複製粘貼規則集。當我有一個工作規則集「在此進行審查」時,它是否允許? – Bart

+0

如果它是「請檢查這個」或「這裏有什麼問題」,那麼NO。如果是「這就是需要做的事情;這是規則;這是行得通的,這不行 - 有人可以幫助」 - 是的,因爲你清楚地表明你在做這件事,需要一點幫助/推動正確的方向等。 – LazyOne

回答

0

嘗試這些mod_rewrite的規則:

RewriteEngine On 
Options +FollowSymLinks 

# force HTTPS for m.example.com 
RewriteCond %{HTTPS} !=on 
RewriteCond %{HTTP_HOST} =m.example.com 
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

# only allow m.example.com & example.com -- everything else gets redirected to https://example.com 
RewriteCond %{HTTPS} =on 
RewriteCond %{HTTP_HOST} !=m.example.com 
RewriteCond %{HTTP_HOST} !=example.com 
RewriteRule .* https://example.com%{REQUEST_URI} [R=301,L] 

# if still no HTTPS then force it (for any other subdomain) 
RewriteCond %{HTTPS} !=on 
RewriteRule .* https://example.com%{REQUEST_URI} [R=301,L] 

# your other rewrite rules below 

請記住,在爲了能夠something.example.com您需要爲特定子域或通配符SSL證書,這將覆蓋任何適當的SSL證書服務器子域。重要的是,在mod_rewrite有機會做任何事情之前(只有在安全連接已經正確建立時纔會啓用),HTTPS的SSL部分工作方式很重要。

+0

感謝您的快速響應! SSL已經在使用通配符證書。我希望我正確配置了虛擬主機,但它的所有接縫都可以正常工作。 我把第一個和最後一個規則放在中,它現在是該虛擬主機的唯一內容。所以所有請求都被重定向到包含DocumentRoot,服務器證書等的,並且我添加了最後兩條規則,以便對https上奇怪子域的請求也進行重新格式化。 – Bart