2012-01-09 149 views
0

在我的.htaccess文件,我已经得到了相当标准的.htaccess重写重定向的URL

RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?p=$1 [NC] 

,我只需要做到这一点的文件在我的根目录。但是,如果我转到我的一个子目录(包含或不包含index.php文件)的URL,例如www.foo.com/bar,那么我将被重定向到www.foo.com/bar/?p=bar - 如何防止添加?p=bar

回答

1

你可以尝试使规则仅执行非目录如下

#if it is not a directory 
RewriteCond %{REQUEST_FILENAME} !-d 
#then send it to index.php 
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?p=$1 [NC,L] 
0

您可以将.htaccess文件放入子目录中。

# /bar/.htaccess 

AllowOverride none 

这应该防止.htaccess继承。

+0

我不知道,如果这是最好的办法;他不得不更新所有子目录,以便在根级别上消除他的过度重写规则。 – kontur 2012-01-09 13:46:01

+0

嗯,是的。另一种选择是为每个子目录添加一个“RewriteCond”的检查,但也必须为每个新目录维护。但就你而言,这可能更合理...... – clmarquart 2012-01-09 14:00:44