如何创建从子目录到根域的重定向?

时间:2010-04-26 14:27:42

标签: drupal .htaccess redirect

我正在尝试将所有请求重定向到domain.com/drupal到domain.com,包括/ drupal中的所有子目录。

我已经看到了几个答案,告诉我如何用.htaccess完成与此相反的事情,但没有什么可以这样做的。我在.htaccess中尝试了以下一行 -

RewriteRule /drupal/* ^/(.*)

以及上述的几种变体,基于这些答案,但没有任何运气。

谢谢!

2 个答案:

答案 0 :(得分:0)

试试这一行:

RewriteRule /drupal/(.*) /$1 [QSA,L]

答案 1 :(得分:0)

让我直截了当......你在<DocumentRoot>/drupal/安装了Drupal。您不想更改drupal安装目录,也不想更改Web服务器配置中的DocumentRoot。您希望将任何请求(例如/foobar.php)重定向到drupal目录,结果可能是/drupal/foobar.php。而所有这些都没有将整个内容暴露给用户。到目前为止?好的,我只能假设您有一个Apache网络服务器,否则.htaccess将无效......

首先,确保您实际上可以使用.htaccess,因此请检查apache配置中的相关AllowOverride指令。

然后在<DocumentRoot>/.htaccess

中尝试这种方式
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/drupal.*
RewriteRule ^/(.*)$ /drupal/$1 [P]

RewriteCond确保您不会遇到无限循环。 RewriteRule的第一部分始终是客户端请求的URL。我们在括号内匹配的部分前缀为/drupal/,并通过[P]将其强制为代理请求,以便apache只执行内部重定向(而不是向客户端发送“文档已移动”重定向码)。

顺便说一句:我没有测试过。我可能在代码中有拼写错误。请阅读http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewriterule以获取更多信息。