【问题标题】:Url Rewriting in asp.net doesn't work for me在 asp.net 中的 URL 重写对我不起作用
【发布时间】:2014-05-05 04:42:11
【问题描述】:

我有以下 URL 和代码来将 URL 更改为我在 URL 中的自定义名称。它不会返回任何错误,但 URL 不会更改。

I want the output like this

From : Frm_AdminHome.aspx?MainPage=AdminDashboard&Type=1&Role=r0LnJW8xTBkMh3DZ3ip3Jyt2o98/krx7 
To : Frm_AdminHome/

我的 Webconfig 代码在这里。

Frm_AdminHome.aspx?MainPage=AdminDashboard&Type=1&Role=r0LnJW8xTBkMh3DZ3ip3Jyt2o98/krx7 //Query string will be change in every time.

<configSections>
    <section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter" />
  </configSections>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <httpRuntime requestValidationMode="2.0" />

    <httpModules>
      <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/>
    </httpModules>

  </system.web>

<rewriter>

    <rewrite url="~/Frm_AdminHome/(.+).aspx" to="~/Frm_AdminHome.aspx" />
  </rewriter>

【问题讨论】:

    标签: asp.net c#-4.0 url-rewriting web-config c#-3.0


    【解决方案1】:

    重写是一个过程,请求的 url 没有改变,另一个页面被传递。例如,当您需要调用 /Frm_AdminHome,但执行 /Frm_AdminHome.aspx?something 而不更改 url 时,您需要遵循 rewrite 规则

    <rewrite url="^/Frm_AdminHome/?$" to="/Frm_AdminHome.aspx?something" processing="stop" />
    

    如果您需要将 url 从 Frm_AdminHome.aspx?something 更改为 Frm_AdminHome/,这称为重定向,您需要使用 redirect 规则

    <redirect url="~/Frm_AdminHome.aspx\?.*" to="~/Frm_AdminHome" />
    

    这应该重定向

    From : Frm_AdminHome.aspx?MainPage=AdminDashboard&Type=1&Role=r0LnJW8xTBkMh3DZ3ip3Jyt2o98/krx7 
    To   : Frm_AdminHome/
    

    详情请参阅http://urlrewriter.net/index.php/support

    如果上面的配置不起作用并且您没有看到任何更改,则很可能 UrlRewriter 模块未处于活动状态。例如,如果您在集成池模式下运行,您可能需要添加

    <system.webServer>
        <validation validateIntegratedModeConfiguration="false"/>
        <!--<modules runAllManagedModulesForAllRequests="true" />-->
        <modules runAllManagedModulesForAllRequests="true">
            <add name="UrlRewriter" 
            type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter" />
        </modules>
    </system.webServer>
    

    附言

    对于 IIS 7+,有一个内置 URL Rewrite Module

    附言

    要获取查询字符串或 rawurl,请使用

    QueryString <%=Request.QueryString.ToString() %> <br />
    RawUrl <%=Request.RawUrl %>
    

    【讨论】:

    • 这不起作用。我在标签 Frm_AdminHome.aspx?MainPage=AdminDashboard&Type=1&Role=r0LnJW8xTBkMh3DZ3ip3Jyt2o98/krx7 中获得了相同的 URL
    • 属性顺序错误,“url”是重写后的url,“to”是真实的url。已更新。
    • 显示的网址相同
    • 你使用什么 IIS,池模式?如果您在集成池模式下运行,您可能需要添加额外的配置,如上所述。
    • 我在本地系统中工作。我没有主持那个。这只是我的第一次测试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 2013-10-03
    • 1970-01-01
    相关资源
    最近更新 更多