使用web.config根据域和语言参数

时间:2018-02-06 15:22:07

标签: iis iis-7 web-config

我有一个以两种语言提供的网站。我有每种语言的域名,例如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>

1 个答案:

答案 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"