RewriteRule仅匹配任何字母数字或短划线

时间:2015-12-14 16:42:07

标签: regex .htaccess mod-rewrite

我正在尝试编写与domain.com/abc匹配的规则

RewriteRule ^([^/\.]+)?$ results.php?category=$1 [L,NC]

这是有效的和类别= abc但是如果我去domain.com

,似乎也会触发此规则

我需要我的规则只匹配斜杠后面的URL包含字母数字字符或破折号。它无法匹配正斜杠,因为domain.com/abc/123无效。

domain.com/abc123 is good
domain.com/abc-123 is good
domain.com/abc/123 should not match
domain.com should not match
domain.com/ should not match

1 个答案:

答案 0 :(得分:2)

您可以使用:

RewriteRule ^([\w-]+)/?$ results.php?category=$1 [L,QSA]

\w匹配[a-zA-Z0-9_]

为避免匹配下划线使用:

RewriteRule ^([a-zA-Z0-9-]+)/?$ results.php?category=$1 [L,QSA]

为了保护它,请使用此条件以避免匹配目录:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/?$ results.php?category=$1 [L,QSA]