[英]IIS Rewrite not working (but redirection does)
我正在尝试使用Rewrite Module 2.0进行URL 重写,但我没有运气让它工作。 我要做的是将端口80上的所有对Web应用程序的调用重新写入IIS中托管的其他应用程序(或者可能在网络上的不同服务器上)。 使用IIS提供的GUI我创建了以下规则:
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="site1/(.*)" />
<action type="Rewrite" url="http://localhost:7001/{R:1}" />
</rule>
</rules>
</rewrite>
安静简单,但不幸的是它不起作用。 另一方面,当我将操作类型更改为Redirect
,它可以正常工作。
可能是什么问题呢?
昨天我遇到了同样的问题,我花了很长时间才弄明白。
这里的关键是你的重写动作中有一个http://
前缀; 这使得这是一个需要由应用程序请求路由处理的特殊情况。 第一步是确保安装了“应用程序请求路由”模块。 您可以在https://www.iis.net/downloads/microsoft/application-request-routing找到该模块。 安装完成后,转到IIS Web服务器(从您的网站升级),然后打开“应用程序请求路由缓存”功能。 从右侧的操作中,选择Server.Proxy.Settings
,并确保选中“启用代理”复选框。 这允许将URL重写任务重新路由到应用程序请求路由,并且您的反向代理应该适用于外部请求。
这个想法来自2009年的优秀博客文章: http : //ruslany.net/2009/04/10-url-rewriting-tips-and-tricks/
当我试图解决同样的问题时偶然发现了这篇旧帖子。
解决了!
在IIS服务管理器中使用重写URL功能,我创建了一个友好的URL规则。
这工作正常,当我查看web.config文件(www root)中的规则时,它显示了1个重定向规则和1个重写规则。
我编辑了这个以适应1场比赛。 然后我只是复制了这段代码,编辑了每个代码的产品ID。 示例如下:
<rule name="RedirectUserFriendlyURL1" stopProcessing="true">
<match url="^product\.php$" />
<conditions>
<add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
<add input="{QUERY_STRING}" pattern="^id_product=\b35\b" />
</conditions>
<action type="Redirect" url="990mm-bohemia-cast-iron-electric-radiator" appendQueryString="false" />
</rule>
第一条规则在URL中查找字符串"product.php"
并且"id_product=35"
,然后重定向到目前不存在的"990mm-bohemia-cast-iron-electric-radiator"
。 然后(见下文)
<rule name="RewriteUserFriendlyURL1" stopProcessing="true">
<match url="^\b990mm-bohemia-cast-iron-electric-radiator\b" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="product.php?id_product=35" />
</rule>
此规则将"product.php?id_product=35"
位重写为“990mm-bohemia-cast-iron-electric-radiator”,为重定向创建新位置。
url重写我遇到404错误。 也许你可以找到它usfull。 请访问https://stackoverflow.com/a/47988082/5784543查看
确保MVC路由不会窃取您的请求。 要防止这种情况发生,请忽略您尝试重写的路径:
RouteTable.Routes.Ignore("blog/{*pathInfo}");
灵感来自: https : //sitecore.stackexchange.com/questions/3645/how-to-setup-a-reverse-proxy-with-sitecore
将重写URL更改为AbsolutePath,而不是将http:// ...更改为
它对我有用,但就我而言,我已经改写为固定的网页。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.