我正在尝试将http://www.domain.com/some/url(.*)
(/url
后面的所有内容)路由到http://some.other.com/some/url{R:1}
(其中{R:1}成为匹配网址中的(。*)内容。< / p>
我尝试了下面的规则和各种变体,但似乎都没有正确重写:
<rule name="Reverse Proxy" stopProcessing="true">
<match url="^some\/url\/(.*)" />
<action type="Rewrite" url="http://some.other.com/some/url/{R:1}" />
</rule>
非常感谢任何帮助!
答案 0 :(得分:2)
你的正则表达可能是问题
如果您想在some/url
之后重定向所有内容,请使用:
<rule name="Reverse Proxy" stopProcessing="true">
<match url="^some/url(.+)$" />
<action type="Rewrite" url="http://some.other.com/some/url/{R:1}" />
</rule>
如果您想在some/url/
之后重定向所有内容并保留路径,那么您可以使用:
<rule name="Reverse Proxy" stopProcessing="true">
<match url="^some/url/(.+)$" />
<action type="Rewrite" url="http://some.other.com/{R:0}" />
</rule>
您可以使用IIS测试模式工具轻松测试您的模式 http://www.iis.net/learn/extensions/url-rewrite-module/testing-rewrite-rule-patterns
修改强>
我为测试第二条规则所做的工作:
test.com
域以重定向到我的服务器(使用主机
文件)在web.config
文件中提供以下配置:
<rule name="test" stopProcessing="true">
<match url="^some/url/(.+)$" />
<action type="Rewrite" url="http://www.google.com/{R:0}" />
</rule>
http://test.com/some/url/google
:
它显示使用Google作为目标重写URL,并将首先请求的路径作为参数。
答案 1 :(得分:1)
我在这方面已经挣扎了好几天。我试过的10-20重写规则和失败的原因是:
如果您尝试重定向VisualStudio(2012/2013/2015),它无法在实际的IIS托管网站中工作,因为VS在调试时(在项目属性中指定时)生成自己的证书以及权限问题是由VS照顾。
IIS中的站点应该有效(没有来自解冻/启用verisign的网站的文件复制粘贴,甚至是snk.exe生成的自签名)证书;请不要认为没有有效证书就可以。 (IIS 8和10中的自签名(也称为开发证书)为我工作;购买和自签名之间的差异为here)。应安装证书,因为IIS可以有多个证书,但每个网站都应使用自己的单独证书。
网站绑定应包含http(80)和https(443)
现在重定向语法出现在图片中;互联网上有几个;您可以轻松获得正确的正则表达式
还必须考虑故事的另一方面,可以使用Global.asax-&gt; Application_BeginRequest或MVC 4/5中的ActionFilter来处理重定向。
使用配置或以编程方式执行重定向可能会导致不同的错误(web.config中的TOO_MANY_REDIRECTS
,<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
我遇到的另一个问题是重定向来自http-&gt; https工作正常,但我无法从https-&gt; http;
考虑您的场景(通常不应该混合)可用的选择
HttpRedirect::
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
UrlRewrite::
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)
是否需要HttpRedirect或UrlRewrite
https://weblogs.asp.net/owscott/rewrite-vs-redirect-what-s-the-difference