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

时间:2013-04-25 08:42:35

标签: .htaccess redirect rewrite directory

文件夹结构:

/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]

添加另一个重写条件以在文件夹的末尾附加'/'会产生额外的(和不必要的)请求,也不是很好。

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

解决方案是。

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

但是这会产生额外的重定向(首先是某个/ /另一个是index.php?url ...)...不是最佳的。

一个好的解决方案是只有一个重定向,无论如何。