IIS7里UrlRewrite实现子域名怎么写

IIS7里UrlRewrite实现子域名怎么写,第1张

跟以前的一样啊

<rewrites>

<add name="com" virtualUrl="^~/(.*).aspx" destinationUrl="~/ok.htm?$1" ignoreCase="true" />

</rewrites>

这个例子就是把所以aspx的文件的都定义到ok.htm ,即主要打开后缀为.aspx 的,都会显示ok.htm这个文件。

要实现这个功能,首先要做域名泛解析,去域名管理里面的域名解析中添加一个:*.worldbao.com 指向服务器ip。

第二,重写URLRewrite里面的两个方法。

1.BaseModuleRewriter.cs 里面的BaseModuleRewriter_AuthorizeRequest方法

[c-sharp] view plaincopy

protected virtual void BaseModuleRewriter_AuthorizeRequest(object sender, EventArgs e)

{

HttpApplication app = (HttpApplication) sender

Rewrite(app.Request.Path, app)

}

[c-sharp] view plaincopy

protected virtual void BaseModuleRewriter_AuthorizeRequest(object sender, EventArgs e)

{

HttpApplication app = (HttpApplication) sender

Rewrite(app.Request.Path, app)

}

改为

[c-sharp] view plaincopy

protected virtual void BaseModuleRewriter_AuthorizeRequest(object sender, EventArgs e)

{

HttpApplication app = (HttpApplication) sender

Rewrite(app.Request.Url.AbsoluteUri, app)

}

[c-sharp] view plaincopy

protected virtual void BaseModuleRewriter_AuthorizeRequest(object sender, EventArgs e)

{

HttpApplication app = (HttpApplication) sender

Rewrite(app.Request.Url.AbsoluteUri, app)

}

2, ModuleRewriter.cs 里面的 Rewrite 方法

[c-sharp] view plaincopy

protected override void Rewrite(string requestedPath, System.Web.HttpApplication app)

{

// log information to the Trace object.

app.Context.Trace.Write("ModuleRewriter", "Entering ModuleRewriter")

// get the configuration rules

RewriterRuleCollection rules = RewriterConfiguration.GetConfig().Rules

// iterate through each rule...

for(int i = 0i <rules.Counti++)

{

// get the pattern to look for, and Resolve the Url (convert ~ into the appropriate directory)

string lookFor = "^" + RewriterUtils.ResolveUrl(app.Context.Request.ApplicationPath, rules[i].LookFor) + "$"

// Create a regex (note that IgnoreCase is set...)

Regex re = new Regex(lookFor, RegexOptions.IgnoreCase)

// See if a match is found

if (re.IsMatch(requestedPath))

{

// match found - do any replacement needed

string sendToUrl = RewriterUtils.ResolveUrl(app.Context.Request.ApplicationPath, re.Replace(requestedPath, rules[i].SendTo))

// log rewriting information to the Trace object

app.Context.Trace.Write("ModuleRewriter", "Rewriting URL to " + sendToUrl)

// Rewrite the URL

RewriterUtils.RewriteUrl(app.Context, sendToUrl)

break // exit the for loop

}

}

// Log information to the Trace object

app.Context.Trace.Write("ModuleRewriter", "Exiting ModuleRewriter")

}

}

[c-sharp] view plaincopy

protected override void Rewrite(string requestedPath,

System.Web.HttpApplication app)

{

// log information to the Trace object.

app.Context.Trace.Write("ModuleRewriter", "Entering ModuleRewriter")

// get the configuration rules

RewriterRuleCollection rules =

RewriterConfiguration.GetConfig().Rules

// iterate through each rule...

for(int i = 0i <rules.Counti++)

{

// get the pattern to look for, and Resolve the Url (convert ~ into

the appropriate directory)

string lookFor = "^" +

RewriterUtils.ResolveUrl(app.Context.Request.ApplicationPath,

rules[i].LookFor) + "$"

// Create a regex (note that IgnoreCase is set...)

Regex re = new Regex(lookFor, RegexOptions.IgnoreCase)

// See if a match is found

if (re.IsMatch(requestedPath))

{

// match found - do any replacement needed

string sendToUrl =

RewriterUtils.ResolveUrl(app.Context.Request.ApplicationPath,

re.Replace(requestedPath, rules[i].SendTo))

// log rewriting information to the Trace object

app.Context.Trace.Write("ModuleRewriter", "Rewriting URL to " +

sendToUrl)

// Rewrite the URL

RewriterUtils.RewriteUrl(app.Context, sendToUrl)

break // exit the for loop

}

}

// Log information to the Trace object

app.Context.Trace.Write("ModuleRewriter", "Exiting ModuleRewriter")

}

}

改为

[c-sharp] view plaincopy

protected override void Rewrite(string requestedPath, System.Web.HttpApplication app)

{

// log information to the Trace object.

app.Context.Trace.Write("ModuleRewriter", "Entering ModuleRewriter")

// get the configuration rules

RewriterRuleCollection rules = RewriterConfiguration.GetConfig().Rules

// iterate through each rule...

for(int i = 0i <rules.Counti++)

{

// get the pattern to look for, and Resolve the Url (convert ~ into the appropriate directory)

string lookFor = "^" + rules[i].LookFor + "$"

// Create a regex (note that IgnoreCase is set...)

Regex re = new Regex(lookFor, RegexOptions.IgnoreCase)

// See if a match is found

if (re.IsMatch(requestedPath))

{

// match found - do any replacement needed

string sendToUrl = RewriterUtils.ResolveUrl(app.Context.Request.ApplicationPath, re.Replace(requestedPath, rules[i].SendTo))

// log rewriting information to the Trace object

app.Context.Trace.Write("ModuleRewriter", "Rewriting URL to " + sendToUrl)

// Rewrite the URL

RewriterUtils.RewriteUrl(app.Context, sendToUrl)

break // exit the for loop

}

}

// Log information to the Trace object

app.Context.Trace.Write("ModuleRewriter", "Exiting ModuleRewriter")

}

}

[c-sharp] view plaincopy

protected override void Rewrite(string requestedPath,

System.Web.HttpApplication app)

{

// log information to the Trace object.

app.Context.Trace.Write("ModuleRewriter", "Entering ModuleRewriter")

// get the configuration rules

RewriterRuleCollection rules =

RewriterConfiguration.GetConfig().Rules

// iterate through each rule...

for(int i = 0i <rules.Counti++)

{

// get the pattern to look for, and Resolve the Url (convert ~ into

the appropriate directory)

string lookFor = "^" + rules[i].LookFor + "$"

// Create a regex (note that IgnoreCase is set...)

Regex re = new Regex(lookFor, RegexOptions.IgnoreCase)

// See if a match is found

if (re.IsMatch(requestedPath))

{

// match found - do any replacement needed

string sendToUrl =

RewriterUtils.ResolveUrl(app.Context.Request.ApplicationPath,

re.Replace(requestedPath, rules[i].SendTo))

// log rewriting information to the Trace object

app.Context.Trace.Write("ModuleRewriter", "Rewriting URL to " +

sendToUrl)

// Rewrite the URL

RewriterUtils.RewriteUrl(app.Context, sendToUrl)

break // exit the for loop

}

}

// Log information to the Trace object

app.Context.Trace.Write("ModuleRewriter", "Exiting ModuleRewriter")

}

}

就是将

string lookFor = "^" + RewriterUtils.ResolveUrl(app.Context.Request.ApplicationPath, rules[i].LookFor) + "$"

改成了

string lookFor = "^" + rules[i].LookFor + "$"

完成这过程之后将整个项目重新编译一下。

这些都做完之后,

在webconfig配置里面的

<configSections>里面 添加:

[xhtml] view plaincopy

<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter"/>

[xhtml] view plaincopy

<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter"/>

在</configSections>下面添加

[xhtml] view plaincopy

<RewriterConfig>

<!-- 处理默认首页失败-->

<Rules>

<RewriterRule>

<LookFor>http://www/.worldbao/.com/</LookFor>

<SendTo>~/default.aspx</SendTo>

</RewriterRule>

</Rules>

<!-- 处理默认首页失败-->

<!--二级域名正则-->

<Rules>

<RewriterRule>

<LookFor>http://([a-zA-Z|0-9]+)/.worldbao/.com/</LookFor>

<SendTo>/user/user.aspx?us=$1</SendTo>

</RewriterRule>

</Rules>

<!--二级域名正则-->

</RewriterConfig>

[xhtml] view plaincopy

<RewriterConfig>

<!-- 处理默认首页失败-->

<Rules>

<RewriterRule>

<LookFor>http://www/.worldbao/.com/</LookFor>

<SendTo>~/default.aspx</SendTo>

</RewriterRule>

</Rules>

<!-- 处理默认首页失败-->

<!--二级域名正则-->

<Rules>

<RewriterRule>

<LookFor>http://([a-zA-Z|0-9]+)/.worldbao/.com/</LookFor>

<SendTo>/user/user.aspx?us=$1</SendTo>

</RewriterRule>

</Rules>

<!--二级域名正则-->

</RewriterConfig>

在httpModules里面添加

[xhtml] view plaincopy

<httpModules>

<add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter"/>

</httpModules>

[xhtml] view plaincopy

<httpModules>

<add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter"/>

</httpModules>

做301跳转到HTTPS,一级与二级域名是相同的,如果在同一个WEB目录情况下,只要指定这个需要跳转的二级域名就可以了,伪静态实现具体如下:网页链接(可以将指定的目录改成自己的二级域名就可以了)

注:前提条件已经安装了指定二级域名的SSL证书,如果没有安装就是配置了301也不会有效使用的。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/402087.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-20
下一篇2023-05-20

发表评论

登录后才能评论

评论列表(0条)

    保存