将另一个域重定向到现有的drupal安装的子目录

时间:2014-01-16 22:59:06

标签: .htaccess mod-rewrite drupal drupal-7

过去几个小时我一直试图解决问题。我迫切需要帮助!

我有两个域名:

rd1.example.com/drupal
rd2.example.com

我在rd1.example.com/drupal /

中安装了drupal

此外,我开始在url别名中创建drupal上的内容:rd1.example.com/drupal/rd2 /

我想要做的是使用第二个网站指向我的drupal安装中的特定内容:

rd2.example.com -> rd1.example.com/drupal/rd2/

我不希望它是重定向,而是内部隐藏重定向。用户会认为他们在rd2.example.com上。

我已将rd2.example.com切换为指向安装drupal的目录。我一直试图在drupal的.htaccess上编辑rewriterules,但没有运气。任何帮助是极大的赞赏。到目前为止,这是我的规则:

#Existing settings
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} !^rd2\.example\.com [NC]
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ index.php [L]

#New rules to accomodate for rd2.example.com
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^rd2\.example\.com$ [NC]
RewriteCond %{DOCUMENT_ROOT}/rd2%{REQUEST_URI} -f
RewriteRule .* /rd2/$0 [L]

2 个答案:

答案 0 :(得分:1)

Drupal依赖服务器变量来处理其请求。这意味着当你在内部重写/rd2/$0时,drupal不知道如何处理它。您需要从rd2`子域反向代理*。所以保持drupal的方式,然后在rd2.example.com文档根目录,添加:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^rd2 [NC]
RewriteRule ^(.*)$ http://rd1.example.com/drupal/rd2/$1 [L,P]

只有在服务器上加载mod_proxy时才会有效,否则什么也不会发生。 Mod_proxy只能通过服务器的配置打开。您还可以从vdad配置中为rd2子域设置反向代理:

ProxyPass / http://rd1.example.com/drupal/rd2/

答案 1 :(得分:0)

除了代理之外,您还可以考虑使用shell命令生成的符号链接,如下所示:

ln -s /path/to/rd1 /path/to/drupal/rd2

更详细信息在Multi-site - Sharing the same code base

中说明
相关问题