我的网站托管在子文件夹中:site.com/foo/
在foo/
文件夹的根目录中,我有以下.htaccess
:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule (.*) webroot/$1 [L]
</IfModule>
它的作用是将所有网页请求重定向到位于webroot/
文件夹中的foo/
子文件夹。
在webroot/
子文件夹中,我有以下.htaccess
:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php/$1 [L]
目标是将所有内容重定向到index.php
。需要明确的是,文件结构为:
www/
foo/
.htaccess
webroot/
.htaccess
index.php
当我尝试访问site.com/foo/
时,我会按预期获得index.php
,但当我尝试随机的内容时,例如:site.com/foo/bar/bar/bar
,我得到&#34;找不到文件&#34; (那就是全部)但我希望index.php
。
仅在访问site.com/foo/
时才有效的原因与第二个.htaccess
无关,默认情况下它只是webroot/
提供其包含的index.php。
注意:它在localhost
中有效,localhost
与我现在使用的服务器之间的主要区别可能是该网站位于ROOT
{{1}但是现在在一个子文件夹中(localhost
)。
注意2:如果我从foo/
删除了/$1
,它会工作,它将ALL重定向到index.php,但没有我需要的参数(index.php/$1
在上面的示例中。 )
如何将所有请求重定向到带有参数的index.php?
答案 0 :(得分:0)
尝试在.htaccess:
中添加RewriteBase
<强> /foo/.htaccess:强>
RewriteEngine On
RewriteBase /foo/
RewriteRule (.*) webroot/$1 [L]
<强> /foo/webroot/.htaccess:强>
RewriteEngine On
RewriteBase /foo/webroot/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php/$1 [L]
答案 1 :(得分:-1)
QSA标志附加查询字符串 -
RewriteRule(。*)index.php?data = $ 1 [QSA]