我真的很喜欢IIS7的URL重写模块,到目前为止,这对我来说真是棒极了。
有一两件事,我不知道该怎么办:我想在他们已编码的空间所有的URL(20%),永久重定向到具有与破折号替代空间的URL( - )。
所以这:
http://www.test.com/About%20Our%20Mission.aspx
应该被重定向到这样的:
http://www.test.com/About-Our-Mission.aspx
是,甚至有可能只用正则表达式?
我真的很喜欢IIS7的URL重写模块,到目前为止,这对我来说真是棒极了。
有一两件事,我不知道该怎么办:我想在他们已编码的空间所有的URL(20%),永久重定向到具有与破折号替代空间的URL( - )。
所以这:
http://www.test.com/About%20Our%20Mission.aspx
应该被重定向到这样的:
http://www.test.com/About-Our-Mission.aspx
是,甚至有可能只用正则表达式?
有没有办法,你想要什么,直接做。
你可能会满足于这样的事情:
^(.*)%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}
一则有关的.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重写模块是伟大的,但只是因为你有一把锤子...
同样可以在一个规则与下ISAPI_Rewrite 3或实现赫利猿用于任何数目的%20S的:
RewriteBase /
RewriteRule ^(.*)%20(.*)$ $1-$2 [LP,R=301,L]
您可以编写自定义重写提供做你想要与原始URL的任何操作。 但是,这涉及到不仅仅是正则表达式的更多。 更多细节在这里 。
也许我疯了,但这似乎工作...
使用正则表达式与此模式使用URL_Rewrite规则:
^(.*) (.*)
重定向到
{R:1}-{R:2}
我用一个空格或多个空格试用了它我使用IIS 10.注意,它的工作原理也同样适用于对正常工作%20
,因为它确实为“ “在URL字符串,欢呼声。