我有一個數據庫驅動的ASP.NET站點,它使用單個APSX頁面來顯示所有站點頁面。因此,網站的所有網址都採用以下格式:ASP.NET自定義404
/main.aspx?page=Page+Title+One
/main.aspx?page=Another+Article+Title
不幸的是谷歌已經收錄許多不存在的網址,大多切割查詢字符串的一部分。例如:
/main.aspx?page=Page+Title or /main.aspx?page=Page
,而不是正確的:
/main.aspx?page=Page+Title+One (this is indexed by Google as well of course).
我試圖實現,如果查詢字符串的頁面名稱並沒有在我的數據庫匹配的條目,以強制404錯誤服務器端,首先是爲了更好的用戶體驗,其次告訴Google這些頁面不存在。
這是我的代碼,並沒有工作。我的意思是它只是顯示在IE 8中的空白頁面,並錯誤在最新的Firefox:
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.StatusCode = 404;
System.Web.HttpContext.Current.Response.Status = "404 Not Found";
System.Web.HttpContext.Current.Response.End();
我看到我日誌中的404碼,但是我沒有得到重定向到我的網頁指定我的錯誤頁面.config:
<customErrors mode="On">
<error statusCode="404" redirect="404.aspx"/>
</customErrors>
我在做什麼錯了?
另一件讓我擔心的事情是,如果我在任何查詢字符串條目上成功強制404錯誤,而這些條目在我的數據庫中沒有匹配,那麼不會影響main.aspx頁面本身,頁面以及?這裏是我的意思:
I 404 main.aspx?page = Non-Existing-Title,但是,我的404影響main.aspx與包括有效的任何查詢字符串,例如main.aspx?page = Existing-Title 。
該網站在IIS6/Win 2003上運行。
感謝您的幫助!
約翰
我不想更改我的URL結構,我想強制404錯誤,而不是。 – 2011-12-22 14:20:00
@JohnCollins,你的舊URL結構仍然會受到支持。但是,今後,您可以擁有友好的網址。無論URL結構如何,提交站點地圖總是一個好主意。最後,請參閱我編輯的404錯誤。 – VinayC 2011-12-23 04:15:39