2016-07-24 85 views
0

我一直在網上狩獵爲這個解決方案,但我只能得到1和2的工作。如何獲得一個HTTP URL重寫HTTP和非WWW到WWW工作

  1. http://www.example.comhttps://www.example.com
  2. www.example.comhttps://www.example.com
  3. http://example.comhttps://www.example.com
  4. https://example.comhttps://www.example.com
  5. https://example.comhttps://www.example.com
  6. example.com/page.aspxhttps://www.example.com/page.aspx

要求:

  • 所有URL是HTTPS
  • 沒有WWW在其中展現WWW
  • 所有其他重定向工作,查詢字符串,而params結轉等
  • 所有URL

所以主要問題是,如果沒有指定協議(httphttps),那麼如果我輸入example.com/blah那麼它g ets轉換爲www.example.com/blah,但在前面放置協議(httphttps)並斷開鏈接。

由於我目前沒有將非WWW URL移動到WWW的規則,因此我不確定是在做什麼,如果必須這樣做,我如何才能使它適用於HTTP到HTTPS 。

  • 我試圖把規則HTTP與非WWW到WWW的規則去HTTPS在一起,但它沒有工作(第一個例子,你會看到 - 底部的例子是我使用什麼此時此刻)。

  • 我一直在使用{HTTP_HOST}而不是在規則的重定向部分寫入了自己的網站網址的嘗試。

  • 我試圖分裂成規則2,一個用於HTTP到HTTPS,一個用於無WWW到WWW。

但似乎沒有任何工作。

目前,我只是用我的hosts文件和實踐,改變規則在web.config文件在Win 2012箱的部位。

我還有其他規則,例如www.example.com/plugins轉到.aspx下的頁面(重寫),但如果URL中沒有www,則這些規則不起作用。

因此,似乎不帶www的網址WWW的重定向的問題,我不知道它與HTTP結合起來的最佳途徑HTTPS規則。

我嘗試的覆蓋HTTPS/WWW和沒有工作的4/5分開(非WWW到WWW),這是該規則的兩個規則組合。

<rule name="Redirect to HTTPS" stopProcessing="true"> 
       <match url="(.*)" /> 
       <conditions logicalGrouping="MatchAny" trackAllCaptures="false"> 
       <add input="{HTTPS}" pattern="^OFF$" /> 
       <add input="{HTTP_HOST}" pattern="^[^www]" /> 
       </conditions> 
       <action type="Redirect" url="https://www.example.com/{R:1}" appendQueryString="true" redirectType="Permanent" /> 
      </rule> 

logicalGrouping="MatchAny""MatchAll"實際切換似乎並不令的方式不同。

只要有人不輸入URL爲http://example.com/plugins那麼它工作正常,並被重定向到https://www.example.com/plugins

不是我知道很多人現在輸入鏈接時實際輸入了協議(//也適用),但它顯然是舊的搜索引擎和我需要處理重複內容的網站嵌入式鏈接。

任何人都可以想到爲什麼這不起作用的原因或我應該嘗試嗎?

我有設置爲端口80/443的WWW和沒有綁定。

我從來沒有找到類似這樣的問題的答案,人們談論IIS設置,如綁定和端口,但我認爲他們應該因爲web.config綁定到URL重定向應用程序和綁定顯然是您的地址。

我只是覺得很奇怪,我之前提出的示例規則與僅向HTTPS提到HTTP的這一個一樣好。

這就是我目前使用的。也許IIS用www做些什麼?

<rule name="Redirect to HTTPS" stopProcessing="true"> 
       <match url="(.*)" /> 
       <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
       <add input="{HTTPS}" pattern="^OFF$" /> 
       </conditions> 
       <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" /> 
      </rule> 

我甚至改變了綁定的順序,使非WWW綁定的WWW綁定認爲之前就可能有一些用它做。

我控制我的DNS和我的A記錄設置像

DNSEntry - WWW 
Type - A 
Destination - MY IP 

所以我有點糊塗到什麼是真正迫使非www網址去WWW網址。由於我目前在web.config中使用的命令只提到了HTTPS。

我在想也許在IIS中有一些東西(我不是IIS 8的專家)已經設置了一些值或者其中一個值的設置應該是沒有WWW的域。

任何幫助將不勝感激。我懷疑有很多關於指向我的網站的網址,但無論如何都沒有WWW,但是知道搜索引擎優化,我可以強制他們都到一個地方,這樣我就不會被重複內容捕獲。

回答

相關問題