如何使用.htaccess将文件夹重定向到index.php?

如何使用.htaccess将文件夹重定向到index.php?,.htaccess,redirect,rewrite,directory,.htaccess,Redirect,Rewrite,Directory,文件夹结构: /index/ /upload/ /something/ 这些文件夹中没有.htaccess(也不应该有) 访问时,它会重定向到,这是不需要的 RewriteEngine on # RewriteBase /base/ # RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] 在文件夹末尾添加另一个重写条件以附加“/”会产生额外的(不必要的)请求,这也不好 如何编写规则

文件夹结构:

/index/
/upload/
/something/
这些文件夹中没有.htaccess(也不应该有)

访问时,它会重定向到,这是不需要的

RewriteEngine on

# RewriteBase /base/ #

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]
在文件夹末尾添加另一个重写条件以附加“/”会产生额外的(不必要的)请求,这也不好


如何编写规则,使文件夹直接发送到前端控制器,而不需要任何不必要的重定向?

尝试添加附加条件以排除现有目录:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]
解决办法是

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*[^/])$ $1/ [NC,L,R=301]
但是这会产生一个额外的重定向(第一个重定向到某物/另一个重定向到index.php?url…)。。。不是最优的


一个好的解决方案是,不管发生什么,只有一个重定向。

在根目录中。htaccess如果在根目录中,为什么会有一个
RewriteBase/base/
?完整路径类似于以下内容:www.site.com/base/something,base是站点内部运行的应用程序之一。你有同样的问题吗。。。所有.htaccess重定向都会忽略现有文件和文件夹。但我希望所有内容都被重定向…如果我使用这个,当我访问www.site.com/something时,它会将我重定向到www.site.com/something/?url=something。我希望重写引擎将现有文件夹视为虚拟路径。