我想将所有传入的请求重定向到一个子目录,但不知道如何重定向。我看起来像here,但这对我不起作用。
因此,如果有人访问www.example.com/test,我希望它重定向到:www.example.com/test/subdirectory,但URL仍然需要是www.example.com/test
我还需要参数才能工作,例如www.example.com/test/index.php?action=home必须重定向到www.example.com/test/subdirectory/index.php?action=home。
我希望有人能帮助我!
发布于 2012-01-16 04:52:19
所以实际上你要求的不是重定向。
重定向意味着web服务器将发送包含该子目录的新url,然后浏览器将请求该新url,并将其显示在浏览器的url栏中。
您想要的是透明地将目录结构映射到不同的实际目录结构。这就是Apache可以使用Alias指令轻松完成的操作。Mod-rewrite也可以做到这一点,因为RewriteRules不包含[R]标签,这将意味着内部重写,而不是重定向HTTP响应。[QSA]标签还会告诉mod-rewrite在重写的url上保留当前的查询字符串参数。但是Mod-rewrite并不总是容易理解的,您的问题对于一个基本的Alias来说已经足够简单了,Apache中几乎总是包含了它(通常比mod-rewrite更常见)。
这应该没问题:
Alias /test /test/subdirectory发布于 2012-01-16 04:51:54
尝试将以下内容添加到站点根目录下的.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]https://stackoverflow.com/questions/8872917
复制相似问题