2010-04-26 116 views
0

我正在尝试将所有请求重定向到domain.com/drupal,包括/ drupal中的所有子目录。如何创建从子目录到根域的重定向?

我已经看到了几个答案,告诉我如何用.htaccess完成与此相反的事情,但没有办法这样做。我曾尝试在.htaccess-

RewriteRule /drupal/* ^/(.*) 

以及上述的几种变化以下行的基础上,这些问题的答案,但还没有任何运气。

谢谢!

回答

0

试试这个行:

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

谢谢,我能够使用我的虚拟主机提供的重定向管理器来配置它(我曾尝试过,它不工作,但后来我找到了一些额外的帮助)。你提供的代码看起来像我正在寻找的东西,所以虽然我无法测试它,但我会为它投票。 (下次我需要这样做时,我会尝试一下:) – ensignavenger 2010-04-29 18:08:52

0

让我得到这个直...您的Drupal的安装在<DocumentRoot>/drupal/。您不想更改drupal安装目录,也不想更改您的web服务器配置中的DocumentRoot。您想要将任何请求(例如/foobar.php)重定向到drupal目录,导致可能为/drupal/foobar.php。而所有这些都不会将整个东西暴露给用户。到目前为止?好吧,我只能假设你有一个Apache网络服务器,否则.htaccess不会工作...

首先,确保你实际上被允许使用.htaccess,所以检查相关的AllowOverride指令在你的apache配置。

然后尝试这种方式在你的<DocumentRoot>/.htaccess

RewriteEngine On 
RewriteCond %{REQUEST_URI} !^/drupal.* 
RewriteRule ^/(.*)$ /drupal/$1 [P] 

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

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

+0

不,ensignavenger想要它。你描述了大多数人要求的“正常”版本。 – Paul 2010-04-26 14:59:13

+0

你的意思是他将drupal移动到DocumentRoot?好的,那么你的回答是正确的,保罗。不过,'RewriteEngine On'和关于'AllowOverride'的东西仍然适用。 – orithena 2010-04-26 15:03:09

+0

谢谢,我试图做的相反 - 该网站最初建立在/ drupal目录,然后我将所有文件移动到根目录,这工作正常,除了图像和内容中的一些链接仍指出到旧/ Drupal路径。我能够使用Web主机提供的重定向管理器来配置重定向!您提供的答案非常全面,并提供了很好的信息! – ensignavenger 2010-04-29 18:06:58

相关问题