我正在使用多站点来托管我的客户端站点。
在开发阶段,我使用子域来托管登台站点,例如client1.mydomain.com。
以下是它在SITES文件夹下的外观:
/sites/client1.mydomain.com
当网站完成并准备上线时,我为实际域创建了另一个文件夹,例如client1.com。 因此:
/sites/client1.com
接下来,我在client1.com下为FILES和SETTINGS.PHP创建了指向子域的符号链接
即
/sites/client1.com/settings.php --> /sites/client1.mydomain.com/settings.php
/sites/client1.com/files --> /sites/client1.mydomain.com/files
最后,为防止Google将子域和实际域都编入索引,我在.htaccess中创建了规则,将client1.mydomain.com重写为client1.com,因此,如果有人尝试访问子域,他将被重定向到实际域名。
以上安排完美无缺。但我不知何故觉得有更好的方法以简单的方式实现上述目标。请随时分享您的观点,我们非常感谢您的所有建议。
答案 0 :(得分:0)
由于您似乎想要重用开发域中的 files / 目录和 settings.php ,我建议您使用默认/ 目录+符号链接以实现您的目标。
即,在开发期间
sites/default/settings.php
sites/default/files/
sites/client1.domain.com -> sites/default (symbolic link)
一旦您准备切换到他们的域名:
sites/client1.com -> sites/default
然后,您可以从虚拟主机中删除 client1.domain.com (或继续进行重写等)。
它将完成与您的方法相同的操作,但如果您在以后添加其他域作为别名(例如),则会获得所有默认请求的“保护”。
答案 1 :(得分:0)
如果您只是在站点之间共享核心和模块文件,则可以使用不同的符号链接布局。
在我的设置中,我将所有共享文件放在一个通用的,不可通过Web访问的目录中:
/var/www/drupal
/var/www/drupal/sites/all/modules
然后对于每个部署,将公共文件和文件夹符号链接到这些文件。
/var/www/client1/public_html/index.php -> /var/www/drupal/index.php
/var/www/client1/public_html/includes -> /var/www/drupal/includes
...
/var/www/client1/public_html/sites/all -> /var/www/drupal/sites/all
然后,您可以将网站的settings.php以及该网站的任何模块或主题放在默认网站目录中
/var/www/client1/public_html/sites/default
此布局还可以根据需要灵活地覆盖任何常见文件,例如.htaccess。
要从暂存转移到生产,您只需要将您的虚拟主机配置从暂存状态修改为生产域名。
答案 2 :(得分:0)
如果您不喜欢大量的符号链接,另一个选项是使用别名多站点支持补丁: http://drupal.org/node/231298#comment-1420180
这将允许您在配置中指定对client1.domain.com的任何请求实际上应使用/sites/client1.com/而不是/sites/client1.domain.com /。
然后当你转向制作时,你可以删除配置设置(尽管如果你不这样做,它不会伤害任何东西)。
此功能是Drupal 7的一部分,但由于新功能不会添加到Drupal 6.更多好消息是你甚至不需要在D7中仅使用文件路径,因为它不是存储作为数据库中文件的完整路径,它们使用诸如public://
或private://
之类的模式,然后Drupal将映射到正确的文件系统路径,从而允许多个存储类型/位置具有更好的可移植性。