Mod Rewrite Rule不匹配某些单词

时间:2012-03-24 05:26:24

标签: php apache .htaccess mod-rewrite

我根本不是mod_rewrite的专家,我正在尝试在下面的规则中添加条件:

  1. 匹配不等于'分享'
  2. 与其中的点不匹配
  3. RewriteRule ^([^/]*)$ http://domain.com/directory/index.php?key=$1 [L]

    http://domain.com/directory/share将无法匹配(分享)

    http://domain.com/directory/foo.php将不匹配(包含点)

    http://domain.com/directory/abcde将匹配

    http://domain.com/directory/abcde-4将匹配

    所有ULR都没有尾随斜杠

    非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

通过将.添加到否定字符类:

,不要将任何内容与点匹配
RewriteRule ^([^./]*)$ <snip>

不匹配结尾/share

RewriteRule ^([^/]*/share)$ <snip>

使用negative lookahead

将它们组合起来不匹配
RewriteRule ^([^./])*(?!/share)$ <snip>