我对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,如果他们进入法语网站的英语,我不会重定向。
知道我做错了什么或调试此类重定向的最佳方法是什么..我尝试过失败的请求跟踪,但没有发现任何有用的信息。
有什么想法吗? 干杯
答案 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>