我有一个以两种语言提供的网站。我有每种语言的域名,例如www.englishsite.com和www.frenchsite.com
应用程序知道根据添加此URL参数更改语言: TemplateCulture = en-CA或TemplateCulture = fr-CA。
但是,我在web.config中使用URL重写功能几乎没有成功将子域映射到特定语言。
以下是我尝试使用的规则。这对我来说不起作用,我希望有人能指出我正确的方向!
<rewrite>
<rules>
<rule name="redirect" enabled="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" negate="true" pattern="^http://www.englishsite.com$" />
</conditions>
<action type="Redirect" url="http://www.englishsite.com/?{R:0}TemplateCulture=en-CA" appendQueryString="true" redirectType="Permanent" />
</rule>
<rule name="redirect2" enabled="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" negate="true" pattern="^http://www.frenchsite.com$" />
</conditions>
<action type="Redirect" url="http://www.frenchsite.com/?{R:0}TemplateCulture=fr-CA" appendQueryString="true" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
答案 0 :(得分:0)
如果我理解你正在努力实现:
http://www.englishsite.com
,则应该会重定向到http://www.englishsite.com/?TemplateCulture=en-CA&{...something...}
http://www.frenchsite.com
,则应该会重定向到http://www.frenchsite.com/?TemplateCulture=fr-CA&{...something...}
然后你的规则应该是这样的:
<rule name="redirect" enabled="true">
<match url="^$" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www.englishsite.com$" />
</conditions>
<action type="Redirect" url="http://www.englishsite.com/?TemplateCulture=en-CA" appendQueryString="true" redirectType="Permanent" />
</rule>
<rule name="redirect2" enabled="true">
<match url="^$" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www.frenchsite.com$" />
</conditions>
<action type="Redirect" url="http://www.frenchsite.com/?TemplateCulture=fr-CA" appendQueryString="true" redirectType="Permanent" />
</rule>
上述规则的说明:
<match url="^$" />
仅匹配主页
<add input="{HTTP_HOST}" pattern="^www.englishsite.com$" />
会在域名www.englishsite.com
<action type="Redirect" url="http://www.frenchsite.com/?TemplateCulture=fr-CA" appendQueryString="true" redirectType="Permanent" />
将使用特定于文化的查询字符串进行重定向。我删除了{R:0},因为IIS URL重写模块会自动附加它,因为您设置了appendQueryString="true"