IIS URL 重定向目录

Posted

技术标签:

【中文标题】IIS URL 重定向目录【英文标题】:IIS URL redirect directory 【发布时间】:2017-01-30 22:42:12 【问题描述】:

我在使用 IIS URl 重定向模块时遇到问题。 尝试从 www.site.com/directory1/default.aspx 重定向 到 www.site.com/directory2/default.aspx

所以对目录 1 的任何请求都需要转到目录 2。我将禁用目录 1 中的应用程序 有任何想法吗? 目前我有以下,但不工作。

<rewrite>
            <rules>
                <remove name="Portal Test Redirect" />
                <rule name="Portal Test Redirect" patternSyntax="Wildcard">
                    <match url="*directory1/*" ignoreCase="false" />
                    <conditions />
                    <serverVariables />
                    <action type="Rewrite" url="R:1/directory2/R:2" appendQueryString="true" />
                </rule>
            </rules>
        </rewrite>        

【问题讨论】:

【参考方案1】:

你需要改变你的规则如下

<rewrite>
    <rules>            
        <rule name="Portal Test Redirect">
            <match url="(.*)(directory1)(.*)" patternSyntax="ECMAScript"/>
            <action type="Rewrite" url="R:1directory2R:3" />
        </rule>
    </rules>
</rewrite>

【讨论】:

这也可以处理查询字符串参数吗?我只需要更改目录 是的,应该是,但我还没有测试过。 您还在遇到问题吗? 在应用程序级别之外使用注册为allowDefinition='MachineToApplication'的部分是错误的。此错误可能是由于虚拟目录未在 IIS 中配置为应用程序所致。 这与 URL Rewrite 规则无关。看起来您在子 web.config 中添加了一个不允许的部分。您能否确认您在哪里添加规则以及您在哪个部分收到此错误?【参考方案2】:

1.打开旧页面所在目录下的web.config 2.然后为旧位置路径和新目的地添加代码如下:

<configuration>
  <location path="services.htm">
    <system.webServer>
      <httpRedirect enabled="true" destination="http://domain.com/services" httpResponseStatus="Permanent" />
    </system.webServer>
  </location>
  <location path="products.htm">
    <system.webServer>
      <httpRedirect enabled="true" destination="http://domain.com/products" httpResponseStatus="Permanent" />
    </system.webServer>
  </location>
</configuration>

试试上面的。引用自Setting up redirect in web.config file

【讨论】:

以上是关于IIS URL 重定向目录的主要内容,如果未能解决你的问题,请参考以下文章

减少链接 URL 重定向 [IIS/Regex/ReWrite]

IIS Rewrite 模块中的 URL 重定向异常被忽略

IIS6 301重定向和IIS7 301重定向

IIS7 301 从 URL 列表重定向

iis里URL重写重定向,http做301重定向https

301 使用 IIS 重定向到具有命名锚点的 URL