为什么.htaccess只接收index.php作为输入

时间:2010-07-11 22:19:36

标签: php .htaccess get

我在我的根文件夹中添加了一个.htaccess文件,我希望在/之后写的所有内容都作为get data发送到index.php文件。

我的根路径看起来像http://www.site.com/folder/,我的.htaccess与index.php一起位于文件夹目录中

这是我的.htaccess文件:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) index.php?args=$1

现在,我在url后面写了什么,args是“index.php”。所以当我访问www.site.com/folder/lots/of/bogey时,args变量是“index.php”

我的目标显然是让args变量为“lot / of / bogey”。我有什么想法吗?

3 个答案:

答案 0 :(得分:1)

您不需要RewriteCond。以下内容适用:

RewriteRule ^(.*)$ index.php?args=$1 [L,QSA]

L使其停止匹配重写规则,QSA用于在重写规则中追加查询字符串。请参阅mod_rewrite

答案 1 :(得分:0)

我认为这是因为在执行RewriteRule并获得index.php?args=...后,再次调用RewriteRule。现在index.php是你的文件名,所以它被传递为args。此mod_rewrite由于递归而中止。要解决此问题,请添加RewriteCond,以确保该文件不是index.php

答案 2 :(得分:0)

您至少要从重定向中排除index.php:

RewriteCond $0 !^index\.php$
RewriteRule .* index.php?args=$0 [QSA,B]