ASP.NET MVC和子域名URL

时间:2011-12-23 20:45:31

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

我在〜/ blog使用此子域blog.fujiy.net

上有一个虚拟应用程序

要获取正确的链接,我正在使用此配置:

<rewrite>
  <rules>
    <rule name="Remove Virtual Directory">
      <match url=".*" />
      <action type="Rewrite" url="{R:0}" />
    </rule>
  </rules>
</rewrite>

但是,如果有人访问blog.fujiy.net/blog,它就不会重定向到blog.fujiy.net。

我无法解决这个问题。我尝试了很多配置.... 每次我尝试做一个条件如果url以/ blog / IIS开头总是返回true,那么我得到一个无限循环。

2 个答案:

答案 0 :(得分:0)

正则表达式让我害怕,但试试这个;它似乎可以快速测试:

<rewrite>
    <rules>
        <rule name="Remove Virtual Directory" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
                <add input="{HTTP_HOST}" pattern="^blog\..*" />
                <add input="{PATH_INFO}" pattern="^/blog" />
            </conditions>
            <action type="Redirect" url="/" redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>

答案 1 :(得分:0)

唯一支持开箱即用的方案是:

您有两个或更多应用程序:将其命名为server.example.com/foo和server.example.com/bar。您可以配置IIS的重写以执行简单的子域 - &gt;应用路径映射,例如foo.example.com - &gt; server.example.com/foo; foo.example.com/path - &gt; server.example.com/foo/path; bar.example.com/path - &gt; server.example.com/bar/path等。在这些示例中,子域本身必须直接映射到应用程序根目录。

要完成此操作,foo.example.com/customers/view/42将映射到server.example.com/foo/customers/view/42,如果您使用的是标准{controller} / {action } / {id}路由标记为{controller = customers,action = view,id = 42}。