RewriteCond模式组不匹配

时间:2014-10-31 11:16:59

标签: .htaccess

首先,我已经跟着很多链接试图为自己解决这个问题,但我似乎无法让它为我工作。

我使用codeigniter作为框架,htaccess一切都很好并且运行良好,但我的客户希望在他们的系统上获取验证文件(谷歌验证的东西)。这些文件的名称类似于google1234324324232.html

这就是我目前的情况:

RewriteEngine on
RewriteCond $1 !^(index\.php|assets|img|css|js|sitemap*|robots\.txt)
RewriteRule ^(.*)$ index.php?/$1 [L]

所以我愚蠢地认为这会起作用:

RewriteEngine on
RewriteCond $1 !^(index\.php|assets|img|css|js|sitemap*|robots\.txt|*.html)
RewriteRule ^(.*)$ index.php?/$1 [L]

但这实际上给了我一个500错误,我猜它与通配符有关,我尝试了正则表达式模式匹配,但似乎总是失败。

1 个答案:

答案 0 :(得分:0)

*不起作用。它必须跟随您想要匹配0或更多的字符。同样地,sitemap*可能没有按照您的想法行事。 sitemap*将匹配以下任何内容:

sitema
sitemap
sitemapppppppppp

因为*适用于p。对于*.html*没有要应用的字符,因此出现正则表达式错误。你想要:

.*\.html

.字符表示“任何内容”。