我正在开发一个使用基于IIS7的网址重写的多语言应用程序。
我想要以下Url操作:
1. fr-ca > index.aspx?l=&lc=fr-ca
2. fr-ca/ > index.aspx?l=&lc=fr-ca
3. fr-ca/568/sometitle > index.aspx?l=568&lc=fr-ca
4. 568/sometitle > > index.aspx?l=568&lc=
基本上,初始fr-ca是可选的。
我目前的规则:
<match url="^(fr-ca.)?([^/][0-9]+)?/*" />
#1
失败另一次尝试:
<match url="^(fr-ca)?(.[0-9]+)?/*" />
传递所有要求,但在这种情况下,后引用{R:2}给出/ 568除外。
我想我可以添加另一条规则,只添加一个/到fr-ca的结尾,但这似乎不正确。
感谢您的帮助!正则表达式让我疯狂。
答案 0 :(得分:1)
你应该这样做吗?你可以实际检查Accept-Language标题,而不是看到他们点击了哪个网址(并重定向到我认为是网页的翻译版本),甚至可能从该ASP页面中查看。
这意味着他们从一开始就看到了他们想要看到的语言,而没有点击页面顶部那个愚蠢的小旗。它不依赖于GeoIP或用户交互。
检查出来。
答案 1 :(得分:0)
自己排序。
^(fr-ca)?/?([0-9]+)?
通过:
fr-ca
fr-ca/
fr-ca/9
fr-ca/9/
fr-ca/9/sometitle
fr-ca/9/sometitle/
fr-ca/9/sometitle/anothertitle
9
9/
9/sometitle
9/sometitle/
9/sometitle/anothertitle