IIS web.config将子文件夹重定向到域

时间:2018-03-19 19:47:29

标签: iis url-rewriting web-config url-redirection

我对IIS url_rewrite模块和web.config设置有一个奇怪的问题。我认为匹配模式存在问题,或者我做错了什么......

我的设置是一个支持多语言的ASP.Net MVC应用程序。对于初学者,我启用了三种语言,英语,德语和法语..因此您可以使用语言参数www.domain.com/en/ www.domain.com/de/ www.domain.com/fr/访问它们。现在我买了一个德国域名,并将页面的德语部分设置为.de域名,所以现在我有www.domain.com/en/ www.domain.de/de/ www.domain.com/fr/一切都好到目前为止..

如果您将www.domain.com/de/写入www.domain.de/de/或反之亦然www.domain.de/en/,我试图找出如何添加安全301重定向的问题回到www.domain.com/en/ ...我不想解决这个问题的主要原因是因为SEO来修复重复的内容问题..

我安装了IIS 8.5,url_rewrite模块,现在我在我的web.config中遇到了这个问题

<rule name="DE Redirect" stopProcessing="true">
    <match url="(.*)" ignoreCase="true" />
    <conditions logicalGrouping="MatchAny">
        <add input="{HTTP_HOST}" pattern="^www\.domain\.com\/de\/$" />
    </conditions>
    <action type="Redirect" url="https://www.domain.de/de/{R:0}" redirectType="Permanent" />
</rule>

如果用户进入或访问www.domain.com/de/page1到www.domain.de/de/page1并且只有在www.domain.com/de/中有用户,我想重定向用户url,如果他们进入法语网站的英语,我不会重定向。

知道我做错了什么或调试此类重定向的最佳方法是什么..我尝试过失败的请求跟踪,但没有发现任何有用的信息。

有什么想法吗? 干杯

1 个答案:

答案 0 :(得分:0)

因为答案不能包含domain.com,所以我将使用example.com和example.de

您应该使用这样的重定向:

<rule name="DE Redirect" stopProcessing="true">
   <match url="^de/(.*)" ignoreCase="true" />
   <conditions>
       <add input="{HTTP_HOST}" pattern="^www\.example\.com$" />
   </conditions>
   <action type="Redirect" url="https://www.example.de/de/{R:1}" redirectType="Permanent" />
</rule>

另外,如果您想阻止在德语域https://www.example.de/fr上打开法语并将其重定向到https://www.example.com/fr,那么您还应该添加

<rule name="FR Redirect on DE domain" stopProcessing="true">
   <match url="^fr/(.*)" ignoreCase="true" />
   <conditions>
       <add input="{HTTP_HOST}" pattern="^www\.example\.de$" />
   </conditions>
   <action type="Redirect" url="https://www.example.com/fr/{R:1}" redirectType="Permanent" />
</rule>