2013-04-25 135 views
2

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

/index/ 
/upload/ 
/something/ 

这些文件夹没有在他们的.htaccess(也不应该)。

当访问http://site.com/something它重定向到http://site.com/something/url=something,这是不希望的。

RewriteEngine on 

# RewriteBase /base/ # 

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

添加另一重写条件在文件夹的末端附加“/”,使附加的(和不必要的)请求,也不是很好。

如何编写规则,以便即使文件夹直接发送到前端控制器也没有任何不需要的重定向?

+0

在根.htaccess中 – Radu 2013-04-25 08:55:49

+0

为什么有'RewriteBase/base /'如果它在根中? – 2013-04-25 08:56:31

+0

完整的路径是这样的** www.site.com/base/something **,base是在该站点内运行的应用程序之一。 – Radu 2013-04-25 09:06:21

回答

0

尝试增加一个附加条件为排除现有目录:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] 
+0

如果我使用这个,当我去** www.site.com/something **时,它会将我重定向到** www.site.com/something /?url = something **。我希望重写引擎将虚拟路径视为现有文件夹。 – Radu 2013-04-25 09:03:10

0

的溶液将是。

RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^(.*[^/])$ $1/ [NC,L,R=301] 

但是,这使得额外的重定向(首先到/和另一个index.php?url ...)...不是最佳。

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

相关问题