我有一个php文件,它接收一个语言代码和一句话:
domain.com/sentence.php?lang=en&sentence=the house is big
此外,这是我当前的.htaccess规则:
RewriteRule ^sentence/([a-z]{2,3})/([^/]{3,})$ /sentence.php?lang=$1&sentence=$2 [QSA,L]
因此,如果用户转到:
domain.com/sentences/en/the+house+is+big
它会被处理得很好。现在的问题是:如果一个句子只包含一个单词(没有空格、句点、逗号、!?等),那么它应该用另一个单词.php而不是sentence.php来处理;例如:
domain.com/sentences/en/house
最后一个url请求应该由word.php 处理
我知道我可以很容易地在sentence.php中验证这一点,但我认为如果我通过.htaccess处理它会更好。有什么想法吗?谢谢
您可以这样调整正则表达式:
RewriteRule ^sentence/([a-z]{2,3})/(w{3,})/?$ /word.php?lang=$1&sentence=$2 [QSA,L]
RewriteRule ^sentence/([a-z]{2,3})/([^/]{3,})$ /sentence.php?lang=$1&sentence=$2 [QSA,L]
第一个正则表达式模式是w{3,}
,它将把domain.com/sentences/en/house
路由到word.php
,剩下的具有多个单词的正则表达式将路由到sentence.php
。