我已经创建了两个站点,一个在端口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>
答案 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" />
这只能解决问题。