2011-09-25 57 views
4

我希望用户访问我的Intranet测试网站 - http://mywebsite:9090如果键入http://mywebsite/testIIS 7.5使用反向代理将URL从默认网站重写为两个网站失败

我在下面的部分 - 7.反向代理到另一个站点/服务器在http://blogs.iis.net/ruslany/archive/2009/04/08/10-url-rewriting-tips-and-tricks.aspx创建一个url重写。

选中位于IIS管理器中应用程序请求路由功能视图中的“启用代理”复选框。我有规则 -

<rule name="Proxy"> 
    <match url="(.*/test)" /> 
    <action type="Rewrite" url="http://{HTTP_HOST}:9090/{R:1}" /> 
</rule> 

但是这不起作用。它没有将我指向http://mywebsite:9090,但未打印出http://mywebsite/test未找到。

改变了规则,看它是否是通过使用代理的问题 -

<rule name="Proxy"> 
    <match url="(.*)" /> 
    <action type="Rewrite" url="http://{HTTP_HOST}:9090/{R:1}" /> 
</rule> 

我可以看到它可以直接我http://mywebsite:9090当我浏览http://mywebsite

我的第一条规则会怎样?

感谢您的帮助。

+0

丝毫不差会更丰富。 – tugberk

回答

6

你想要什么是规则:

“^测试(/.*)?$”

你的行动可以保持不变。

根据上面的规则,你会说“如果URL(包括第一个斜杠,即”http://mywebsite.com/“)的HTTP_HOST部分之后的第一件事情等于测试,那么你 在所有URL的其余部分(如果有的话)上创建一个捕获组,重写URL为具有HTTP_HOST,添加端口9090,然后追加第一个捕获组中的任何内容(即R:1,无论是在正则表达式中的括号)。

确保取消追加查询字符串作为你捕捉你所需要的正则表达式的一部分,并不需要这一点。

信贷,就是它因,我正在努力解决这个问题d找到我需要的东西在这里:

问题的

http://forums.iis.net/t/1180781.aspx

+0

感谢您的回复。但它不适用于我。当我输入http://mywebsite.com/test时,IIS Url Rewrite的测试模式中出现验证错误。我可能没有说清楚。我想要的是我不喜欢打开9090到互联网。当用户键入http://mywebsite.com/test时,IIS可以在http://mywebsite.com/test内部重写http://mywebsite.com:9090并通过端口80显示我的测试网站。http:// http:// mywebsite.com/是使用端口80的互联网开放的生产站点。是否可以通过URL重写?再次感谢! – Don

+0

请尝试以下操作;使用空白规则,添加上面提到的规则作为匹配(确保您选择正则表达式),并选择重定向到像谷歌网站这样的已知工作网站。如果验证失败,不要担心(尽管它不应该),请使用它进行测试。去你的/测试,看看你是否被重定向到谷歌。如果你这样做,那么你只需要制定出正确的方式来引用你的网站(即mywebsite:9090)。希望有所帮助。 – brettbaggott

+0

布雷特,你说得对。它可以指引我到Google。我只需要弄清楚如何指向mywebsite:9090。谢谢! – Don