IIS7 URL重写模块替换(IIS7 URL Rewriting Module Replace)

2019-06-24 10:37发布

我真的很喜欢IIS7的URL重写模块,到目前为止,这对我来说真是棒极了。

有一两件事,我不知道该怎么办:我想在他们已编码的空间所有的URL(20%),永久重定向到具有与破折号替代空间的URL( - )。

所以这:

http://www.test.com/About%20Our%20Mission.aspx

应该被重定向到这样的:

http://www.test.com/About-Our-Mission.aspx

是,甚至有可能只用正则表达式?

Answer 1:

有没有办法,你想要什么,直接做。

你可能会满足于这样的事情:

^(.*)%20(.*)%20(.*)%20(.*)  replaced by:  {R:1}-{R:2}-{R:3}-{R:4}
^(.*)%20(.*)%20(.*)         replaced by:  {R:1}-{R:2}-{R:3}
^(.*)%20(.*)                replaced by:  {R:1}-{R:2}


Answer 2:

一则有关的.aspx好东西是多么容易改写与真正的代码的URL。 只需添加一点点的搜索和替换代码到您的网站的Global.asax文件:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    string path = HttpContext.Current.Request.Path;
    // Search and replace, RegEx, etc.
    HttpContext.Current.RewritePath(path);
}

在IIS7,你必须在web.config中处理重写非的.aspx的URL添加一些条目:

<system.webServer>
    <handlers>
        <clear/>
        <add name="Brands1" path="Brands/*.html" verb="*" type="ASP.global_asax" resourceType="Unspecified"/>
        <add name="Brands2" path="Brands/\?*.html" verb="*" type="ASP.global_asax" resourceType="Unspecified"/>
        <!-- ... -->

IIS7的URL重写模块是伟大的,但只是因为你有一把锤子...



Answer 3:

同样可以在一个规则与下ISAPI_Rewrite 3或实现赫利猿用于任何数目的%20S的:

RewriteBase /
RewriteRule ^(.*)%20(.*)$ $1-$2 [LP,R=301,L]


Answer 4:

您可以编写自定义重写提供做你想要与原始URL的任何操作。 但是,这涉及到不仅仅是正则表达式的更多。 更多细节在这里 。



Answer 5:

也许我疯了,但这似乎工作...

使用正则表达式与此模式使用URL_Rewrite规则:

^(.*) (.*)

重定向到

{R:1}-{R:2}

我用一个空格或多个空格试用了它我使用IIS 10.注意,它的工作原理也同样适用于对正常工作%20 ,因为它确实为“ “在URL字符串,欢呼声。



文章来源: IIS7 URL Rewriting Module Replace