.htaccess - Htaccess URL Rewrite 捕获 2 或 5 个字符(但不是

我当前捕获所选语言的重写规则是这样的:

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

所以它会捕获这些:

  • /language/es(西类牙语)
  • /language/de(德语)

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

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

有什么想法吗?谢谢!

最佳答案

然后我会把它分开:

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').

关于.htaccess - Htaccess URL Rewrite 捕获 2 或 5 个字符(但不是 3 或 4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8287744/

相关文章:

qt - 如何使用QT从打印机打印图像文件

git - 当我用分支推送时,.gitignore 不会忽略文件

php - 我可以将匿名函数放在 PHP 的数组中吗?

sql-server - SQL Server 2008,我可以在 udf 中的 select 语句

assembly - 将二进制转换为十进制并在汇编中显示

c# - 如何从后面的 C# 代码更新 WPF 绑定(bind)的值?

android - 如何将 OutputStream 转换为文件?

visual-studio - VS2010 中缺少“属性页”选项卡

sql - 使用 SQL 脚本创建 SQL Server 数据库

vb.net - 从 ListView 中删除项目