2013-01-22 47 views
0

我有一個用於IIS(IIS 7.5,Win2K8 R2)的ColdFusion(CF10)自定義404處理程序,用於檢查「友好的URL」,並且如果找到則返回適當的內容。例如:IIS中的ColdFusion自定義404處理程序 - 如何返回狀態200好?

http://www.domain.com/user1返回相同的內容作爲http://www.domain.com/?user=user1

似乎IIS僅返回前x(1000?)個字節的頁,並且還返回404錯誤。是否有可能強制IIS返回200 OK?我試着向404處理程序添加:

<cfheader statusCode="200" statusText="OK"> 

但IIS仍然向瀏覽器返回404錯誤。

作爲後續問題,有沒有更好的方法來做到這一點?我可以使用URL重寫模塊嗎?我認爲這可能很困難,因爲我認爲它只匹配URL中的模式,並且友好的URL也可以匹配可能存在的文件夾名稱。這就是我的404處理程序檢查的對象。

+0

因爲我似乎無法重寫使用cfheader已經拋出的404錯誤,也許有一種方法在IIS中告訴它不要拋出404錯誤,然後我可以從404處理程序本身拋出它......除非那會觸發IIS再次調用404處理程序? – Redtopia

回答

2

你在這裏觸及幾件不同的事情。對於第一部分,SEO友好的URL,我會說IIS Rewrite是使用的工具。無需ColdFusion浪費這些處理時間。讓IIS Rewrite處理它,並僅將有意義的內容傳遞給ColdFusion。如果你使用谷歌類似iis rewrite for seo friendly urls的東西,你可以找到成千上萬的例子。

對於問題的第二部分,處理404錯誤。我建議你不要爲這些返回一個200 OK狀態碼。畢竟他們是404。相反,通過發出301 Moved Permanently狀態碼,可以將404處理程序(如果可能)重定向到新的(或想要的)頁面。它不僅會將訪問者推送到正確的頁面,還會讓搜索引擎機器人保持高興。如果你沒有一個頁面來重定向你的訪問者,那麼請務必返回一個合適的404 Not Found狀態碼。也許在最終的404頁面中包含一些指向您網站最常見頁面的鏈接。再次,谷歌是你的朋友,搜索例如301 redirect for 404 errors的例子。請記住,對於301重定向,您還需要包含新的位置(用於重定向)。像這樣:

<cfheader statuscode="301" statustext="Moved Permanently"> 
<cfheader name="Location" value="http://www.newlocation.com"> 

另外,你沒有真正提到你在IIS和/或ColdFusion中的404處理設置。這些可以單獨設置,也可以設置爲一起工作(即,您的IIS 404處理程序可以指向您的ColdFusion 404處理模板)。這就是我通常設置我的服務器的方式。這使您能夠記錄,電子郵件,重定向等所有404錯誤。

+0

謝謝......我認爲你是對的。我需要通過IIS中的URL重寫模塊來完成此操作。如果你有一分鐘​​,也許你可以看看我的問題:http://stackoverflow.com/questions/14468014/iis-7-url-rewrite-do-i-include-the-http-or-https-protocol-在最正則表達式 – Redtopia

相關問題