我试图理解为什么当一个人试图进入该站点时,在IIS中创建的以下规则不起作用。
基本上我们有一个旧域和一个新域。我希望任何访问旧域的人都可以重定向到我们新域上的登录页面。
我正在为网站使用ASP MVC4,我已经添加了域的绑定和更新的DNS。
我的规则是:
<rule name="http://www.olddomain.com to landing page" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<action type="Redirect" url="http://www.new-domain.co.uk/LandingPage" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="http://www.olddomain.com" />
<add input="{HTTP_HOST}" pattern="http://olddomain.com" />
<add input="{HTTP_HOST}" pattern="http://www.olddomain.com/" />
<add input="{HTTP_HOST}" pattern="http://olddomain.com/" />
</conditions>
</rule>
目前,如果有人输入旧的域名地址,重定向不会做任何事情,网站只会加载,就像您通过新域进入主页一样。
谁能告诉我这里哪里出错?
更新下面提供的规则似乎仍然不起作用所以我决定尝试在fiddler中打开我的旧域地址,看看我是否能看到重定向或响应。我得到的只是200 HTTP响应,仅此而已。这让我觉得重写规则实际上被忽略但我不明白为什么。
{HTTP_HOST}
将始终只是主机名,不包括协议或路径。尝试将规则更改为:
<rule name="http://www.olddomain.com to landing page" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<action type="Redirect" url="http://www.new-domain.co.uk/LandingPage" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^www\.olddomain\.com$" />
<add input="{HTTP_HOST}" pattern="^olddomain\.com$" />
</conditions>
</rule>
几天来我一直在努力。我试过10-20重写规则,失败的原因是:
Request 1 (from client): Get file.htm
Response 1 (from server): The file is moved, please request the file newFileName.htm
Request 2 (from client): Get newFileName.htm
Response 2 (from server): Here is the content of newFileName.htm
Request 1 (from client): Get file.htm
URL Rewriting (on server): Translate the URL file.htm to file.asp
Web application (on server): Process the request (run any code in file.asp)
Response 1 (from server): Here is the content of file.htm (note that the client does not know that this is the content of file.asp)
whether you need HttpRedirect or UrlRewrite
https://weblogs.asp.net/owscott/rewrite-vs-redirect-what-s-the-difference