2011-02-11 31 views
2

我將兩個Drupal站點合併爲一個多站點安裝。但其中一個網站的文件保存在<drupal root>/files而另一個保存在<drupal root>/files/site-2(實際上是符號鏈接<drupal root>/sites/site-2/files)。現在我正在尋找一種方式來「合併」他們沒有失去我的網站-1的URL結構即我想將Drupal文件目錄重寫爲子文件夾

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] 

但這似乎並不奏效。有人能幫助我嗎?

+0

背景問題:通過Drupal的文件表處理的文件,或獨立上傳? – anschauung 2011-02-11 22:27:01

回答

1

經典:服務器配置不正確,導致指令無法正常工作。哎呀。我的解決方案,現在就像是我在我的第一個「答案」說:更改路徑上使用子目錄,然後重定向舊文件到該文件夾​​:

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/');