Tom*_*len 5 asp.net multilingual url-rewriting
使用示例网址:
www.domain.com/contact-us
Run Code Online (Sandbox Code Playgroud)
在English. 本网站还支持一组其他语言:
www.domain.com/es/contact-us
www.domain.com/jp/contact-us  
www.domain.com/de/contact-us
www.domain.com/pt/contact-us
Run Code Online (Sandbox Code Playgroud)
这是英语的重写规则(默认语言)
<rewrite url="^/contact-us(\?(.+))?$" to="~/Pages/Contact.aspx$1" processing="stop"/>
Run Code Online (Sandbox Code Playgroud)
我将如何修改这个/添加一个新规则来重写:
www.domain.com/jp/contact-us  
Run Code Online (Sandbox Code Playgroud)
到:
~/Pages/Contact.aspx?language=jp
Run Code Online (Sandbox Code Playgroud)
最好不必为每个内容页面的每种语言编写新规则!
更复杂的是,它需要匹配 IETF 语言标签。这些变化足够多,看起来像匹配它们的正则表达式将是一条艰难的路线:https : //en.wikipedia.org/wiki/IETF_language_tag
理想情况下,我需要从数据库中获取语言列表,并动态匹配语言标签字段。但我不知道如何做到这一点,因为我只写过静态规则。
您有权访问.htaccess主目录中的文件吗?如果是这样,您可以通过编写以下内容来制定自动重写规则
Options +FollowSymLinks
RewriteEngine on
RewriteRule /(.*)/contact-us/ /Pages/Contact.aspx?language=$1
RewriteRule /contact-us/ /Pages/Contact.aspx?language=en
Run Code Online (Sandbox Code Playgroud)
让我解释:
之后RewriteRule,用户友好的 URL 位于左侧,此处/(.*)/contact-us/为(.*)将jp发生的位置。然后jp将其转置到右侧真实的URL上,这里/Pages/Contact.aspx?language=$1替换为$1.
输入网址:http://www.example.com/jp/contact-us 
输出网址:http://www.example.com/Pages/Contact.aspx?language=jp
对于第二个模型RewriteRule,由于 URL 与http://www.example.com/contact-us/第一个模型不匹配,因此会http://www.example.com/Pages/Contact.aspx?language=en自动转换为。
请记住,该.htaccess文件必须位于根目录(旁边的Pages文件夹)中。否则你将不会得到想要的结果。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           1141 次  |  
        
|   最近记录:  |