我有一個站點混合使用IIS 7.5的W2K8 R2服務器上運行的.html和.aspx頁面。該網站是舊網站的重新開發,所有網址和大部分內容已從舊網站更改爲新網站。由於人們使用舊的鏈接,我預計會獲得大量的404。自定義404頁面重定向不工作在IIS7.5當丟失的URL在子文件夾中
我想將404錯誤重定向到自定義頁面(/404.aspx)。這是我的web.config的(部分):
<system.web>
<customErrors mode="On" redirectMode="ResponseRewrite">
<error statusCode="404" redirect="/404.aspx" />
</customErrors>
</system.web>
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/404.aspx"
responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
託管管道模式的應用程序池的這個網站是Integrated
。
這個重定向到我的自定義404.aspx頁面在某些時候運行良好,而其他時候它只是一種工作。這些種類的URL重定向就好:
然而,這些種類的URL(其中缺頁是在子文件夾中)收到一條奇怪的結果:
- http://www.example.com/folder/not-a-real-page.aspx
- http://www.example.com/folder/not-a-real-page.aspx
子文件夾URL會發生什麼?我從404.aspx頁面獲取HTML標記,但由於頁面中的所有CSS和腳本引用都缺失,因此頁面無法正確呈現我可以從嗅探網絡流量中知道,因爲不知何故,IIS正試圖將/folder/
插入到URL爲的資源中,該資源的相對路徑位於我的404.aspx頁面中。例如,我的網站的根文件夾中的我的404.aspx頁面對css/style.css
有引用,但對於/ folder /中缺少的頁面觸發的404頁面,瀏覽器嘗試下載:/folder/css/style.css
- 顯然不是那裏。
有沒有人知道我在做什麼錯在這裏?
使用我的404.aspx標記中的所有鏈接的絕對路徑竟然是一個可行的解決方案。將斜槓添加到所有href =和src =引用對於樣式表,腳本引用,圖像和超鏈接似乎都可以正常工作。我從設計師那裏得到的標記都帶有所有頁面相對的URL。我會試着請設計師在將來使用合適的URL,但我可能不會屏住呼吸!謝謝@michielvoo! –