.htaccess mod_rewrite - make rule忽略文件

时间:2014-11-07 14:40:54

标签: regex apache .htaccess mod-rewrite redirect

我创建了这条规则:

RewriteRule ^([^/]+)/?$ gallery.php?name=$1 [L,QSA,NC]

但它仍然影响index.php文件。所以我尝试添加这条规则:

RewriteRule ^/?$ index.php [L,QSA,NC]

没有结果。

可以告诉mod_rewritte忽略文件吗?

1 个答案:

答案 0 :(得分:1)

是的,您可以使用否定前瞻:

RewriteRule ^((?!index\.php)[^/]+)/?$ gallery.php?name=$1 [L,QSA,NC]

或使用否定RewriteCond来获得相同效果:

RewriteCond %{REQUEST_URI} !^/index\.php$ [NC]
RewriteRule ^([^/]+)/?$ gallery.php?name=$1 [L,QSA,NC]

或者只是避免此规则中的所有文件/目录:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ gallery.php?name=$1 [L,QSA,NC]