简单 IIS 重定向表达式 (“*”) 会引发错误:表达式“*”会引发错误。包含重复表达式
我有世界上最简单的正则表达式: *
我将它放在 IIS 中的一个网站中,因为我希望其中一个站点作为代理,而其他站点在本地提供服务。因此,web.config 是:
<system.webServer>
<rewrite>
<rules>
<rule name="AllRewrite" stopProcessing="true">
<match url="*" />
<action type="Rewrite" url="http://tom-pc/{R:0}" />
</rule>
</rules>
</rewrite>
</system.webServer>
但是,这会引发此错误:
表达式“”包含重复表达式(在大多数情况下为“”、“?”、“+”、“{”之一),且前面没有表达式。
有什么想法吗?
I have the world's simplest regular expression: *
I put it in a web site in IIS because I want one of the sites to be a proxy, and the others to serve locally. So, the web.config is:
<system.webServer>
<rewrite>
<rules>
<rule name="AllRewrite" stopProcessing="true">
<match url="*" />
<action type="Rewrite" url="http://tom-pc/{R:0}" />
</rule>
</rules>
</rewrite>
</system.webServer>
However, that throws this error:
The expression "" contains a repeat expression (one of '', '?', '+', '{' in most contexts) that is not preceded by an expression.
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
错误说明了一切。您的正则表达式无效。 * 是重复字符(零次或多次)。您应该指出哪个字符允许重复零次或多次。您可能需要任何字符,因此您的正则表达式应该是: .*
要回答有关代理的其他问题,不可能通过重写到另一个主机名来进行代理。您只能重写为同一服务器上的其他 URI。要使用 IIS 进行代理,您必须安装 ARR(应用程序请求路由)模块。
The error says it all. Your regular expression is invalid. The * is a repeat character (zero or more times). You should indicate which character is allowed to be repeated zero or more times. You probably want any character, so your regular expression should be: .*
To answer your other question about proxying, it's not possible to proxy by rewriting to another host name. You can only rewrite to other URI's on the same server. To proxy with IIS you have to install the ARR (Application Request Routing) module.