泛解析泛域名301重定向带参数跳转在iis的web.config中的设置方式 二级域名301重定向

443 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。  

问: web.config里面的配置有谁了解? 这个url里面是什么意思?

<match url="." />  这个url不带域名的吗?


网站用的域名泛匹配。
期望这样的跳转方式,我提供几个范例:
test1.domainA.com/s.html?c=12… 跳转到:
test1.domainB.com/s.html?c=12…
aa34234.domainA.com/s.html?c=55… aa34234.domainB.com/s.html?c=55…
其中二级域名都是不定的,后面的参数也是不定的。

我做了表达式:^(.
?)domainA.com(.*)$
让它跳转到:{R:1}domainB.com{R:2}

{R:1}表示括号中匹配的第1组
{R:1}表示括号中匹配的第2组

XML/HTML code?

1234567891011121314<?``xml version``=``"1.0" encoding``=``"UTF-8"``?>``<``configuration``>``    ``<``system.webServer``>``        ``<``rewrite``>``            ``<``rules``>``                ``<``rule name``=``"test001" stopProcessing``=``"true"``>``                    ``<``match url``=``"^(.*?)domainA.com(.*)$" />``                    ``<``conditions logicalGrouping``=``"MatchAll" trackAllCaptures``=``"false" />``                    ``<``action type``=``"Redirect" url``=``"{R:1}domainB.com{R:2}" redirectType``=``"Permanent" />``                ``</``rule``>``            ``</``rules``>``        ``</``rewrite``>``    ``</``system.webServer``>``</``configuration``>



上面代码经过反复测试并没有效果。好像那个url只能匹配参数形式,没道理啊

one day later

已经完美解决。

XML/HTML code?

12345678910111213141516<?``xml version``=``"1.0" encoding``=``"UTF-8"``?>``<``configuration``>``    ``<``system.webServer``>``        ``<``rewrite``>           ``            ``<``rules``>``                ``<``rule name``=``"RedirectToNewDomain" enabled``=``"true" patternSyntax``=``"Wildcard" stopProcessing``=``"true"``>``                    ``<``match url``=``"*" />``                    ``<``conditions logicalGrouping``=``"MatchAny"``>``                        ``<``add input``=``"{HTTP_HOST}" pattern``=``"*domainA.com*" />``                    ``</``conditions``>``                    ``<``action type``=``"Redirect" url``=``"http://{C:1}domainB.com{C:2}{HTTP_URL}" appendQueryString``=``"false" />``                ``</``rule``>``            ``</``rules``>``        ``</``rewrite``>``    ``</``system.webServer``>``</``configuration``>


昨天研究了半天没搞定,今天在一个哥们的帮助下没几分钟解决了。。这哥们只会一点点php,并不懂asp也没用过iis,偶尔还让我帮忙写点小工具,他是凭什么解决的呢?
总体来说是因为他用谷歌,我用百度。。。


他搜到了:stackoverflow.com/questions/5… serverfault.com/questions/2…

这是关键的信息。使用了这个老外的代码后基本完美解决,只是跳转后参数无法传递过去。

里面的<action type="Redirect" url="http://{C:1}.newdomain.com{C:2}{PATH_INFO}" appendQueryString="false" /> 标红的PATH_INFO不知道大家有没有注意到。这个代码使用了后参数会丢失。也不难理解,这个是表示路径,于是我想应该有表示参数之类的变量,而这个应该是有个一整套的大写字母表示的环境变量,我要找到带参数的环境变量,应该是REQUEST之类开头的?我不好意思再麻烦哥们了,人家都去吃饭了,后面得靠自己了,我想应该会存在一篇文章专门介绍这些大写的变量,而这个页面应该包含PATH_INFO和我要的表示参数的未知变量名,于是我在百度用关键字“PATH_INFO iis7”搜,怎么也搜不到我要的信息,都是无关信息。


后来我用哥们给我的可以在谷歌找资料的工具hideu.app/?f=d3DaA,下载… iis7”搜,结果大不一样。

当我看到IIS Server Variables时就已经知道我的问题解决了。iis服务器变量嘛。

点开一看,果然清晰整齐的列表,我很快找到了,我要的是{HTTP_URL},并不是我一开始想的REQUEST开头之类的。换上去一测试,非常完美。


有人会问,那你为什么不一开始在百度搜IIS Server Variables或者搜iis环境变量呢?你这就事后诸葛了,谁能一下子就想到呢?或许我的搜索技能有待提升吧。反正谷歌很懂我,第一页前面就看到了我要的结果。至于百度嘛,不加评价,大家自己看吧。老外的技术论坛有用的信息比较,以后可以多逛逛,还能练练英语水平,不过访问速度好慢啊。

另外说下{C:1}是什么意思,前面说过{R:1}表示正则子匹配第一组,R表示regular的首字母。 {C:1}表示普通模式的匹配第一组。

注意301重定向的配置参数中虽然也有<rewrite>标签,但是它并不是“url重写”,这两者是不一样,注意区分。<``action type``="Redirect" url="xxx">和区别