【问题标题】:IIS Rewrite Rules: I need an IIS URL Rewrite pattern which gives me required urlIIS 重写规则:我需要一个 IIS URL 重写模式,它为我提供所需的 url
【发布时间】:2014-04-04 17:17:38
【问题描述】:

我需要一个 IIS7 URL 重写模式,它可以提供像 www.mydomain.com/username/signup 这样的 URL。

我正在 IIS URL 重写中创建一个友好的 URL 模式

我的正常 URL 应该是这样的

 http://www.mydoamin.com/signup.aspx?usr="username"

以及 IIS 中可用的选项,例如

http://www.mydoamin.com/signup/usr/username

http://www.mydoamin.com/usr/username

http://www.mydoamin.com/signup/username

但我需要一个模式来将我的网址重写为

 http://www.mydomain.com/username/signup.

可以这样重写url吗?

【问题讨论】:

    标签: asp.net iis-7 url-rewriting


    【解决方案1】:

    只是尝试,没有测试过。

    <rewrite>
      <rules>
        <rule name="Rewrite To Clean Url">
          <match url="^signup.aspx?user=([0-9a-zA-Z]+)" />
          <action type="Rewrite" url="{R:1}/signup" />
        </rule>
      </rules>
    </rewrite>
    

    您可以使用 R:N 在匹配模式中引用捕获组,其中 N 是对捕获组的引用。[1]

    <rewrite>
      <rules>
        <rule name="Rewrite to article.aspx">
          <match url="^article/([0-9]+)/([_0-9a-z-]+)" />
          <action type="Rewrite" url="article.aspx?id={R:1}&title={R:2}" />
        </rule>
      </rules>
    </rewrite>
    

    例如在这种模式中:

    ^(www\.)(.*)$
    

    对于字符串:www.foo.com,反向引用将被索引为 如下:

    {C:0} - www.foo.com
    {C:1} - www.
    {C:2} - foo.com
    

    参考:

    [1]http://www.iis.net/learn/extensions/url-rewrite-module/creating-rewrite-rules-for-the-url-rewrite-module

    [2]http://forums.iis.net/t/1187281.aspx?Capture+the+back+reference+in+the+content+URLs

    【讨论】:

    • 感谢参考。
    【解决方案2】:

    它工作完美...对于 www.mydomain.com/username/signup

                <rule name="RedirectUserFriendlyURL2" stopProcessing="true">
                    <match url="^Signup\.aspx$" />
                    <conditions>
                        <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
                        <add input="{QUERY_STRING}" pattern="^usr=([^=&amp;]+)$" />
                    </conditions>
                    <action type="Redirect" url="{C:1}/Signup" appendQueryString="false" />
                </rule>
                <rule name="RewriteUserFriendlyURL2" stopProcessing="true">
                    <match url="^([^/]+)/?Signup$" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="Signup.aspx?uname={R:1}" />
                </rule>
    

    【讨论】:

      猜你喜欢
      • 2014-05-01
      • 2014-10-27
      • 2017-01-17
      • 2011-04-21
      • 2020-01-05
      • 1970-01-01
      • 2014-01-05
      相关资源
      最近更新 更多