我在我的根文件夹中添加了一个.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”。我有什么想法吗?
答案 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]