簡體   English   中英

在ASP.NET中重寫URL?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM