2015-12-15 33 views
0

我有一個運行Umbraco CMS的ASP.Net MVC網站。我們正在爲SEO目的進行一些修改。其中之一包括降低所有網址。我已經設置了一個IIS URL重定向規則,以便將所有傳入網址上的301重定向到網址的ToLower'd版本。這是IIS創建默認規則:爲什麼我的301重定向導致混合內容錯誤?

<rule name="LowerCaseRule" stopProcessing="true"> 
     <match url="[A-Z]" ignoreCase="false" /> 
     <conditions logicalGrouping="MatchAll" trackAllCaptures="false" /> 
     <action type="Redirect" url="{ToLower:{URL}}" redirectType="Permanent" /> 
    </rule> 

我有一些額外的規則,以及(HTTP => HTTPS,下降結尾的斜槓),但是這似乎是一個問題。

正如預期的那樣,這個ToLower降低了所有的URL。不幸的是,這包括如下路徑:

/Content/MySite/Theme/css/bootstrap.min.css 

這與通過HTTPS提供的主頁面結合導致混合內容錯誤。圖像仍然加載警告,但腳本和樣式表被阻止。

我能看到的唯一解決方案是通過我的整個解決方案並手動小寫每個URL。但是,這相反擊敗了使用URL重定向的目的。這也是瘋狂的片狀,因爲我保證會錯過一些。

如何更改此規則或添加額外規則以避免這些混合內容錯誤?

回答

0

聽起來好像不是所有的內容都通過HTTPS提供以獲取混合內容消息。您是否使用Web瀏覽器開發工具驗證了這一點? 我也會對開發工具網絡選項卡感興趣,並且對於未加載的內容獲取什麼狀態代碼。

+0

內容*通過HTTPS提供。但是,當IIS將調用從「/Content/MySite/Theme/css/bootstrap.min.css」重定向到「/content/mysite/theme/css/bootstrap.min.css」時,該重定向將作爲HTTP發送,因此混合內容警告。我需要強制重定向來尊重協議,但我不知道如何去做。 – Necoras

+0

好的,所以http => https規則對引導文件不起作用。這個規則中是否有任何規定說不要對CSS文件執行此操作,或者只對aspx執行此操作?我假設這個文件是在同一個網站上有這個規則的。 –

+0

Hrm在經過更多研究之後,看起來像https重定向實際上並不針對.js文件。現在,我得到了404s。 IE瀏覽器,該內容不能通過https提供。現在問題變成如何啓用IIS通過https提供內容。 – Necoras