2014-10-31 74 views
1

首先,我跟踪了很多链接,试图为自己弄清楚这一点,但我似乎无法让它为我工作。RewriteCond模式组不匹配

我使用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错误,我想这是通配符的问题,我尝试了正则表达式模式匹配,但它似乎总是失败。

回答

0

*不能这样工作。它必须遵循一个你想匹配0或更多的字符。同样,sitemap*可能不会做你认为它做的事。因为*适用于p

sitema 
sitemap 
sitemapppppppppp 

sitemap*将匹配任何以下的。对于*.html*没有适用的字符,因此是正则表达式错误。你想:

.*\.html 

.字符的意思是“任何东西”。