[英]Rewriting URLs in ASP.NET?
我正在使用ASP.NET C#。
如何實現類似於StackOverflow.com的URL重寫過程?
http://stackoverflow.com/questions/358630/how-to-search-date-in-sql
此外,URL中的“358630”等值的含義是什么? 這是問題ID(他們用來從表中獲取數據的基礎)? 無論是什么,在我的應用程序中,我使用“ID”字段識別記錄。 該字段是SQL表中的標識列。 現在,我的網址如下:
http://myweb.com/showdetails.aspx?id=9872
但我希望他們看起來像:
http://myweb.com/showdetails/9872/my_question_title
要么:
http://myweb.com/9872/my_question_title
或者無論什么最好的方式,這將很好地搜索機器人。
我的應用程序托管在Go Daddy的共享托管服務上,我覺得沒有自定義的ASP.NET“HTTP模塊”或沒有用於URL重寫的自定義DLL正在他們的服務器上運行。 我嘗試了很多樣品,但沒有運氣!
我發現Stack Overflow托管在Go Daddy(共享主機?)上。 也許Stack Overflow的方法對我有用。
SO正在使用ASP.NET MVC 。 您真的需要詳細閱讀MVC URL重寫的工作原理,但其中的要點是URL中的“問題”部分是Controller類的名稱(大致對應於URL中的“showdetails”)和number是該Controller上默認操作的ID參數(與URL中的參數“id”相同)。
由於MVC不是一個選項,您可以嘗試重定向404。 這將在ASP.NET 1.1及更高版本中工作:使用IIS config或web.config將404s和405s重定向到您自己的處理程序,在處理程序中解析請求並重定向到適當的資源。
<configuration>
<system.web>
<customErrors mode="On" defaultRedirect="error.html">
<error statusCode="404" redirect="newHandler.aspx"/>
</customErrors>
</system.web>
</configuration>
在System.Web.Routing出現之前,常見的做法是使用UrlRewriter.NET 。 工作得很好,但在配置IIS時可能會咬你。 我不確定是否有任何簡單的方法在ASP.NET中使用新的路由類(即,將其放入和重新編譯代碼)。
請在URL中解釋諸如“358630”之類的值的含義
這(大概)是數據庫中問題的ID。 在MVC模型中
myurl.com/questions/358630
類似於
myurl.com/questions.aspx?id=358630
應用程序實際上忽略了URL末尾的問題標題。 它通常用於搜索引擎優化和人類可讀性目的。 實際上,您可以在URL中更改此問題的標題,並注意頁面仍然可以正常加載。
新的System.Web.Routing dll是ASP.NET 3.5 SP1的一部分,可以在ASP.NET 3.5上進行bin部署 ,因此您可以在經典的ASP.NET WebForms站點上使用它的功能。
您可能希望在他關於在IIS 6上使用MVC的帖子中注意到Phil Haack的評論,因為您可能需要在路由網址中包含.aspx擴展名
http://www.mysite.com/controler.aspx/action/id
您可能還想查看問題標記的SEO 。
在網址末尾忽略的問題名稱通常稱為“Slug”,用於搜索引擎優化目的,以在網址中包含網頁標題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.