如何在指向子文件夹的域上托管asp.net mvc应用程序?

时间:2009-01-14 17:04:31

标签: asp.net-mvc

我有以下情况:

www.somedomain.com - >这指向共享主机上的文件夹,例如/ MyFolder1 www.otherdomain.com - >这指向同一共享主机上的另一个文件夹,例如/ MyFolder2

使用asp.net mvc,我的网址被映射到:

www.somedomain.com/MyFolder1/Action www.somedomain.com/MyFolder2/Action

我(显然)不希望我的网址上有“MyFolder1”和“MyFolder2”。我如何在asp.net MVC上解决这个问题?

我希望:

www.somedomain.com/Action www.somedomain.com/Action

但我需要将子文件夹保留在IIS(或其他一些允许我拥有两个站点的解决方案,同一主机上有不同的域)。

非常感谢帮助。

由于

3 个答案:

答案 0 :(得分:1)

处理此IMO的最佳方法是在IIS级别使用重写。我刚刚在使用IIS 7 URL Rewrite的站点上执行此操作。如果您的主机提供程序上未安装此模块,则可以尝试使用其他URL重写工具之一。但是,例如在DiscountASP上,您可以使用IIS 7 URL重写。

首先,您需要将所有域指向当前站点。然后,当您下载工具http://blogs.iis.net/bills/archive/2008/05/31/urlrewrite-module-for-iis7.aspx时,它提供了用于编辑规则的GUI。最终将规则放入web.config文件中。您希望规则看起来像这样:

    <rewrite>
        <rewriteMaps>
            <rewriteMap name="otherdomain" />
        </rewriteMaps>
        <rules>
            <rule name="otherdomain" stopProcessing="false">
                <match url=".*" />
                <conditions>
                    <add input="{HTTP_HOST}" pattern="otherdomain.com" />
                </conditions>
                <action type="Rewrite" url="/site_folder/otherdomain/{R:0}" />
            </rule>
        </rules>
    </rewrite>

如果你正在使用ISAPI重写,我可能会很快就有一个我正在使用的不支持IIS重写的主机

答案 1 :(得分:0)

我的托管服务提供商正在使用带有ISAPI_Rewrite的IIS 6。

它工作正常,www.somedomain.com/MyFolder1/Action在入口页面上成为www.somedomain.com/Action。但是所有Url.ActionLink()都会再次映射到我不想要的www.somedomain.com/MyFolder1/Action。

答案 2 :(得分:0)

最简单的方法是在共享主机上创建子域。像app1.somedomain.com和app2.somedomain.com这样的东西,子域直接映射到应用程序所在的子目录,并成为根目录。