我想将所有传入的请求重定向到子目录,但无法弄清楚如何。我看了here,但那对我不起作用。
因此,如果有人访问www.example.com/test
,我希望将其重定向到:www.example.com/test/subdirectory
,但网址仍需www.example.com/test
我还需要使用参数,例如www.example.com/test/index.php?action=home
必须重定向到www.example.com/test/subdirectory/index.php?action=home
。
我希望有人可以帮助我!
答案 0 :(得分:1)
尝试将以下内容添加到站点根目录中的.htaccess文件中。 默认情况下会传递查询字符串参数。
RewriteEngine on
RewriteBase /
#if not an existing file or directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# rewrite to subdirectory
RewriteRule ^(.*)(/[^/]+)?$ /$1/subdirectory/$2 [L,QSA]
答案 1 :(得分:1)
所以实际上你要求的不是重定向。
重定向意味着网络服务器将发送包含子目录的新网址,然后浏览器将请求此新网址,并将其显示在浏览器的网址栏中。
你想要的是将目录结构顺序映射到不同的真实目录结构。这就是Apache可以使用Alias
指令轻松完成的工作。 Mod-rewrite也可以这样做,RewriteRules不包含[R]
标签,这意味着内部重写,而不是重定向HTTP响应。 [QSA]
标记还会告诉mod-rewrite将当前查询字符串参数保留在重写的url上。但Mod-rewrite并不总是很容易理解,而且你的问题对于基本的Alias
来说很简单,它基本上都包含在Apache中(通常比mod-rewrite更多)。
这应该没问题:
Alias /test /test/subdirectory