2017-09-22 103 views
2

我在我的网站的根目录中有html页面,并且在名为“c”的文件夹中有更多页面。正则表达式 - 如何否定多个单词

我在我的.htaccess文件中有以下正则表达式来隐藏URL中的子目录“/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”中的页面。

但是这使得它,这样是不包括所有的字符串开始用字母A,C,E等

我怎样才能使它精确检查的字符串; “串”的“串开始与呢?

回答

2
  1. 使用锚与匹配精确,而不是开始匹配。
  2. 可以使用单个字符一个字符类[acefins],而不是交替(a|c|e|f|i|n|s)

使用此规则:

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

谢谢,但是'mainpage1'到'mainpage15'实际上是所有不同的唯一名称'RewriteCond%{REQUEST_URI}!^ /(?:[acefins] | home | mainpage1 | mainpage2 | mainpage3 | mainpage4 | mainpage5 | mainpage6 | mainpage7 | mainpage8 | mainpage9 | mainpage10 | mainpage11 | mainpage12 | mainpage13 | mainpage14 | mainpage15)/?$'然后工作? – Cris

+0

它给我一个500内部服务器错误 – Cris

+0

也许这是因为[acefins]是文件夹?刚刚看到你的评论会尝试它 – Cris