Htaccess URL重写捕获2或5个字符(但不是3或4)

时间:2011-11-27 18:07:20

标签: .htaccess mod-rewrite

我目前用于捕获所选语言的重写规则是:

RewriteRule ^language/([A-Za-z-]{2,5})/?$ /yadayada.php?hl=$1 [QSA,L]

所以它会抓住这些:

  • / language / es(西班牙语)
  • / language / de(german)

但是,语言代码只能包含2个字母(例如:en,es,de)或5个字母(例如:zh-TW)。问题是它应接受任何这些(3或4个字母,或全部5个小写字母):

  • / language / esp(三个字母)
  • / language / zh-tw(在第二部分使用小写字母,必须是zh-TW)

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:8)

我会把它分开:

RewriteRule ^language/([a-z]{2}|[a-z]{2}-[A-Z]{2})/?$ /yadayada.php?hl=$1 [QSA,L]

匹配是否有2个小写字母(例如' de'或' en'或' fr')如果有2个小写字母后跟一个破折号和2个大写字母(例如' zh-TW'或' zh-CN')。