变量中无法识别下划线和短划线

时间:2014-02-24 10:01:15

标签: php regex apache .htaccess seo

我的.htaccess

中有以下规则
RewriteRule ^([\da-z]+)/([\da-z]+)/(\d+)/?$ index.php?office=$1&page=$2&news_id=$3 [L,QSA,NC]
RewriteRule ^([\da-z]+)/([\da-z]+)/?$ index.php?office=$1&page=$2 [L,QSA,NC]

当我有一个网址时:www.test.com/media/continuous-training它不会向变量发送连续训练。如果我不使用短划线或下划线,一切都很好。

我认为问题在于我的规则中的正则表达式,但不确定如何解决它。

谢谢!

2 个答案:

答案 0 :(得分:1)

您需要将-_添加到角色类中。使用此:

RewriteRule ^([\da-z_-]+)/([\da-z_-]+) ...

答案 1 :(得分:0)

您可能最好在与[W-]匹配的角色类中使用[A-Za-z0-9_-]

RewriteRule ^([\w-]+)/([\w-]+)/(\d+)/?$ index.php?office=$1&page=$2&news_id=$3 [L,QSA]
RewriteRule ^([\w-]+)/([\w-]+)/?$ index.php?office=$1&page=$2 [L,QSA]