如何将我的自定义URl重定向到ASP.Net IIS 7.5中的特定端口

时间:2012-08-07 22:32:28

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

我已经创建了两个站点,一个在端口80上,它是默认站点,另一个在端口786上,现在我希望如果用户打开URL http://myurl.com/Application,它应该打开http://myurl.com:786/Application。我已经安装了IIS 7.5 Rewrite模块。我尝试了不同的代码,例如

<rule name="Red" stopProcessing="true">
        <match url=".*" />
    <conditions logicalGrouping="MatchAll">
                          <add input="{HTTP_HOST}" pattern="www.myurl.com/Application" />

             </conditions>

        <action type="Rewrite" url="http://{HTTP_HOST}:786/{R:0}" />
    </rule>

2 个答案:

答案 0 :(得分:0)

我认为它喜欢301永久重定向。 您可以使用HttpModule来执行此操作。

public class CustomHttpModule : IHttpModule
{

    private HttpApplication app;

    public void Init(HttpApplication context)
    {
        app = context;
        app.AuthorizeRequest += App_AuthorizeRequest;
    }

    public void App_AuthorizeRequest(object sender, EventArgs e)
    {
        HttpRequest req = app.Request;
        string path = req.Path;

        // if starts with http://{HTTP_HOST}
        if (path.StartsWith("http://{HTTP_HOST}", true, CultureInfo.CurrentCulture))
        {
            string redirectUrl = path.Replace("http://{HTTP_HOST}", "http://{HTTP_HOST}:786");
            app.Response.StatusCode = 301;
            app.Response.AddHeader("Location", redirectUrl);
            app.Response.End();
        }
    }

    public void Dispose()
    {

    }
}

此外,您需要在system.webserver节点和system.web节点中配置此HttpModule。

答案 1 :(得分:0)

<add input="{REQUEST_URI}" matchType="Pattern" pattern="^/Application$" ignoreCase="true" negate="false" />

这只能解决问题。