代码之家  ›  专栏  ›  技术社区  ›  JoshKraker

asp.net连续是从url中删除的反斜杠

  •  0
  • JoshKraker  · 技术社区  · 15 年前

    我在我的asp.net web应用程序中遇到了一个问题,其中故意从请求url中删除连续的反斜杠。

    我会要求如下: 本地主机/page/a//c

    但当请求到达页面时,原始url是: 本地主机/page/a/c

    不确定这是否是罪魁祸首,但我确实有一个url rewite regex,规则如下:

       <system.webServer>
            <rewrite>
                <rules>
                    <rule name="Games QueryString">
                      <match url="^(Page|OtherPage).aspx(?:/([\w-_()]+)(?:/([\w-_() ]*)(?:/([\w-_()]+))?)?)?$" />
                      <action type="Rewrite" url="{R:1}.aspx?1={R:2}&amp;2={R:3}&amp;3={R:4}" appendQueryString="false" />
                    </rule>
                </rules>
            </rewrite>
        </system.webServer>
    

    那么,重写之后,querystring将以page.aspx的形式出现?1=A&2=C&3= 什么时候应该是page.aspx?1=A&2=3=C

    救命啊!啊!

    1 回复  |  直到 15 年前
        1
  •  0
  •   nizmow    15 年前

    你可以把regex改成这样:

    ^(Page|OtherPage).aspx(?:/+([\w-_()]+)(?:/+([\w-_() ]*)(?:/+([\w-_()]+))?)?)?$
    

    我在您的匹配项后添加了“+”,这将使他们从接受单个“/”改为接受一个或多个。

    而且,我一辈子都搞不懂你为什么要在那里多砍几刀。可能是个坏主意。不管什么原因,都要重新考虑。

    推荐文章