使用URL重写

时间:2011-12-11 09:50:09

标签: asp.net vb.net url-rewriting

我正在尝试使用URL rewrites并且无法使其发挥作用。

  1. 我有一个网址http://localhost/CToastWebsite/Rooms.aspx,想要将其写为http://localhost/CToastWebsite/Rooms

  2. 我还有另一个网址http://localhost/CToastWebsite/Rooms.aspx?type=CreateRoom,想写一下http://localhost/CToastWebsite/Rooms/CreateRoom

  3. 我该怎么做呢?

    我已经尝试过,即使我将/styles/styles.css与网址http://localhost/CToastWebsite/Rooms.aspx/CreateRooms一起使用,我的CSS和图片也无效。这是使用像这样的URL的正确方法吗?

    我卡住了,我搜索过文章,但是我找不到任何易于理解的内容,让CSS和图像能够正常工作。

    修改

    我已设置urlrewritingnet.net,但我遇到了问题。我设定了一个规则,如:

    <urlrewritingnet xmlns="http://www.urlrewriting.net/schemas/config/2006/07" >
    <rewrites>
    
      <add name="Rewrite"  virtualUrl="^~/Rooms"
           rewriteUrlParameter="ExcludeFromClientQueryString"
           destinationUrl="~/Rooms.aspx"
           ignoreCase="true" />
    
    </rewrites>
    
    </urlrewritingnet>
    

    所以我希望/rooms.aspx更改为/rooms,但页面会一直显示/rooms.aspx

    现在会话状态错误

      

    只有在配置文件或Page指令中将enableSessionState设置为true时,才能使用会话状态。还请确保System.Web.SessionStateModule或自定义会话状态模块包含在应用程序配置的\\部分中。

    我在&lt; system.web&gt;中的web.config文件中添加了标记:

    <sessionState mode="InProc" timeout="20" cookieless="UseCookies" />
    

    我在页面指令中设置了EnableSessionState="true"

    解决方案

    我按照Stack Overflow问题 Error using session in IIS 7 让会话状态再次运行。

1 个答案:

答案 0 :(得分:-1)

我个人不会使用具有整个页面名称的URL,加上其中的扩展名 - 虽然这使得问题很容易解决(因为我假设您仍在请求原始页面),但在我看来,打败URL重写的重点。

.NET有很多URL重写实现,很容易配置和使用。

我使用URL Rewriting.Net

您可以使用工具查看请求的去向。 Internet Explorer的一个常用选项是IE HTTP Headers - 这对于查看浏览器的重定向位置通常很有用。这可以帮助您确定CSS和图像的请求位置。

Scott Hanselman也有post about how to do this in IIS 7

Stack Overflow上还有很多示例 - 请查看右下角的 Related 链接以获取示例。

如果你想弄清楚出了什么问题,你可能还想发布一些关于如何进行重写的代码示例。