正则表达式 - 如何否定多个单词

时间:2017-09-22 18:53:09

标签: regex .htaccess mod-rewrite url-rewriting

我的网站根目录中有html页面,而且名为" c"的文件夹中有更多页面。

我的.htaccess文件中有以下正则表达式来隐藏子目录" / c "来自网址。

RewriteCond %{REQUEST_URI} !^/(a|c|e|f|i|n|s|home|mainpage1|mainpage2| mainpage3|mainpage4|mainpage5|mainpage6|mainpage7|mainpage8|mainpage9|mainpage10|mainpage11|mainpage12|mainpage13|mainpage14|mainpage15)
RewriteRule ^(.*)$ /c/$1 [NC,L]

单个字母只是其他文件夹的名称。这个正则表达式可以防止" / c"从被添加到任何主页面,只添加到实际位于文件夹" c"。

的页面

然而,这样就可以排除所有字符串以<,em>开头字母a,c,e等。

如何让它精确检查字符串; &#34;字符串&#34;而不是&#34;字符串开头?

1 个答案:

答案 0 :(得分:2)

  1. 使用锚点精确匹配,而不是匹配开始。
  2. 您可以使用字符类[acefins]而不是替换单个字符(a|c|e|f|i|n|s)
  3. 使用此规则:

    RewriteCond %{REQUEST_URI} !^/(?:[acefins]/.*|home|mainpage1|mainpage2|mainpage3|mainpage4|mainpage5|mainpage6|mainpage7|mainpage8|mainpage9|mainpage10|mainpage11|mainpage12|mainpage13|mainpage14|mainpage15)/?$