将Drupal文件目录重写为子文件夹

时间:2011-02-11 20:18:20

标签: drupal .htaccess mod-rewrite

我正在将两个Drupal站点合并为一个多站点安装。但其中一个网站将文件保存在<drupal root>/files,而另一个网站将文件保存在<drupal root>/files/site-2(实际上是<drupal root>/sites/site-2/files的符号链接)。现在我正在寻找一种方法来“合并”它们而不会丢失我的site-1的url结构,即我想要

http://site-1.com/files显示http://site-1/files/site-1
并保持http://site-2.com/files/site-2原样。

我想这可以通过一个简单的.htaccess mod_rewrite操作来完成,但我对此并不了解。我在尝试

RewriteCond %{HTTP_HOST} site-1.com  
RewriteRule ^/files(.*)?$ /files/site-1$1 [NC]

但这似乎不起作用。有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

Classic:服务器配置不正确,因此指令不起作用。哎呀。我的解决方案就像我在第一个'回答'中说的那样:更改使用子目录的路径,然后将旧文件重定向到该文件夹​​:

RewriteCond %{HTTP_HOST} site-1.com 
RewriteCond %{REQUEST_URI} !^/files/site-1/.*$ 
RewriteRule ^files/(.*)$ /files/site-1/$1 [L,R=301]

我认为内部Drupal路径不能用于重写(例如imagecache)。这就是我选择这个选项的原因。

fyi:用于更改数据库中路径的替换内容是这样的(在phpmyadmin中):

UPDATE files SET filepath = REPLACE(filepath,'files/','files/site-1/'); 
UPDATE node_revisions SET body = REPLACE(body,'src="/files/','src="/files/site-1/'); 
UPDATE node_revisions SET teaser = REPLACE(teaser,'src="/files/','src="/files/site-1/'); 
UPDATE boxes SET body = REPLACE(body,'src="/files/','src="/files/site-1/');