2011-10-27 44 views
1

我試圖在drupal中使用子目錄設置多站點環境。這裏有一組非常好的說明:http://www.drupalcoder.com/blog/drupal-multisite-in-subfolders,但它是特定於apache,我正在與Nginx合作。Drupal中的多站點環境使用nginx上的子目錄

我怎麼在Nginx的做這些兩兩件事:

從鏈接引用上面:

添加別名Apache配置文件

我們要爲3個子目錄請求去到相同的Drupal 實例。我們可以使用Apache的別名功能來做到這一點。

Alias /subdir1 /var/www 
Alias /subdir2 /var/www 
Alias /subdir3 /var/www 

我假設這裏Drupal的代碼庫託管在/ var/WWW的 機器上。

重定向所有請求到index.php

現在,我們的服務從一個代碼庫中的所有要求,我們必須 重定向所有請求到index.php。這需要完成,因爲所有的 Drupal請求都來自一個叫做index.php的端點。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} ^/subdir1/(.*)$ 
RewriteRule ^(.*)$ /subdir1/index.php?q=$1 [L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} ^/subdir2/(.*)$ 
RewriteRule ^(.*)$ /subdir2/index.php?q=$1 [L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} ^/subdir3/(.*)$ 
RewriteRule ^(.*)$ /subdir3/index.php?q=$1 [L,QSA] 
+0

我已經嘗試了下面提到的解決方案,但都沒有爲我工作。我正在努力解決同一問題! –

回答

0

這應該工作(沒有檢查)別名:

location ~ ^/subdir\d+/(.*)$ { 
    alias /var/www; 
} 

和像這樣的重寫&的FastCGI-PHP:

location/{ 
    root /var/www; 
    index index.php index.html; 

    if (!-f $request_filename) { 
     rewrite ^(.*)$ /index.php?q=$1 last; 
     break; 
    } 

    if (!-d $request_filename) { 
     rewrite ^(.*)$ /index.php?q=$1 last; 
     break; 
    } 
} 

location ~ .php$ { 
    fastcgi_pass 127.0.0.1:9000; 
    fastcgi_index index.php; 

    fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; 
    fastcgi_param QUERY_STRING  $query_string; 
    fastcgi_param REQUEST_METHOD $request_method; 
    fastcgi_param CONTENT_TYPE  $content_type; 
    fastcgi_param CONTENT_LENGTH $content_length; 
} 
0

我會用一個地圖在http級別將/ subdir作爲變量捕獲所有內容。然後你可以避免引入位置依賴的正則表達式位置。

map $uri $params { 
    ~^/[^/]+/(?<subpath>.*) $subpath; 
} 

server { 
    root /var/www; 

    location /subdir1/ { 
     try_files $uri $uri/ /subdir1/index.php?q=$params 
    } 

    location /subdir2/ { 
     try_files $uri $uri/ /subdir2/index.php?q=$params 
    } 

    location /subdir3/ { 
     try_files $uri $uri/ /subdir3/index.php?q=$params 
    } 
} 
相關問題