使用.htaccess重定向,具体取决于字符串是一个单词还是一个句子



我有一个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

最新更新