-->

IIS重写不工作(但不重定向)(IIS Rewrite not working (but redir

2019-07-21 09:38发布

我试图使用的重写模块2.0 URL重写玩,但我没有运气得到它的工作。 我正在试图做的是重新写在端口80到IIS托管的其他应用程序(或在网络上的不同服务器也许)的所有调用的Web应用程序。 使用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 ,它工作正常。

可能是什么问题呢?

Answer 1:

我昨天碰到了同样的问题,我花了很长的时间来弄清楚。

这里的关键是,你有一个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/



Answer 2:

这个跨越,当我试图解决同样的问题,老后绊倒了。

解决了!

在使用IIS服务管理器重写URL功能,我创建了一个友好的URL规则。

这个工作确定,当我看着在web.config文件(WWW根)规则这表明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>

第一条规则查找字符串"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"位为'990毫米-波希米亚-铸铁电散热器”,开创了重定向新的位置。



Answer 3:

我有404错误与URL重写。 也许你可以找到它usfull。 请检查https://stackoverflow.com/a/47988082/5784543



Answer 4:

一定要确保MVC路由不偷你的要求。 为了防止这种情况发生,不理你正在试图改写路线:

RouteTable.Routes.Ignore("blog/{*pathInfo}");

:灵感来自https://sitecore.stackexchange.com/questions/3645/how-to-setup-a-reverse-proxy-with-sitecore



Answer 5:

更改重写URL到AbsolutePath而不是把HTTP:// ...它应该是

它为我工作,但对我来说,我一直在改写到一个固定的网页。



文章来源: IIS Rewrite not working (but redirection does)