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

时间:2015-04-07 22:23:21

标签: .htaccess mod-rewrite

我有这个接收语言代码的.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

......它会得到很好的处理。现在的问题是:如果句子只包含一个单词(没有空格,点,逗号,!?等),那么它应该由不同的word.php而不是sentence.php处理; e.g:

domain.com/sentences/en/house

最后一个网址请求应由word.php处理

我知道我可以很容易地验证句子内部.php,但我认为如果我通过.htaccess处理它会更好。有任何想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

你可以像这样调整你的正则表达式:

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