Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex .htaccess mod_rewrite-使规则忽略文件_Regex_Apache_.htaccess_Mod Rewrite_Redirect - Fatal编程技术网

Regex .htaccess mod_rewrite-使规则忽略文件

Regex .htaccess mod_rewrite-使规则忽略文件,regex,apache,.htaccess,mod-rewrite,redirect,Regex,Apache,.htaccess,Mod Rewrite,Redirect,我创建此规则: RewriteRule ^([^/]+)/?$ gallery.php?name=$1 [L,QSA,NC] RewriteRule ^/?$ index.php [L,QSA,NC] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^/]+)/?$ gallery.php?name=$1 [L,QSA,NC] 但它仍然影响index.php文件。因

我创建此规则:

RewriteRule ^([^/]+)/?$ gallery.php?name=$1 [L,QSA,NC]
RewriteRule ^/?$ index.php [L,QSA,NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ gallery.php?name=$1 [L,QSA,NC]
但它仍然影响index.php文件。因此,我尝试添加以下规则:

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


可以告诉mod_Rewrite忽略文件吗?

是,您可以使用负前瞻:

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]
或者只需避免此规则中的所有文件/目录:

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

谢谢!效验如神