2010-02-10 48 views
13

我有我的主要網站和wordpress在我的服務器上的不同目錄中,我使用nginx作爲web服務器。主要網站在/ home/me/www和Wordpress在/ home/me/wordpress中。我需要通過這種方式將它們放在不同的目錄中,這是出於特定原因。我該如何在nginx配置文件中指定它?我現在有以下內容,這是行不通的:從nginx的不同位置服務php文件

location/{ 
    root /home/me/www; 
    index index.php index.html index.htm; 
} 

location /blog { 
    root /home/me/wordpress; 
    index index.php index.html index.htm; 
} 

location ~ \.php$ { 
    set $php_root /home/me/www; 
    if ($request_uri ~ /blog) { 
     set $php_root /home/me/wordpress; 
    } 
    fastcgi_pass 127.0.0.1:9000; 
    fastcgi_index index.php; 
    fastcgi_param SCRIPT_FILENAME $php_root$fastcgi_script_name; 
    include /etc/nginx/fastcgi_params; 
} 

目前它,當我嘗試訪問http://mydomain/blog

回答

11

退房this questionNginx Manual返回HTTP 404。

試着改變你的blog行:

location ^~ /blog/ { 
    root /home/me/wordpress; 
    index index.php index.html index.htm; 
} 
+1

感謝您的回答!其實,你指出的問題是我很久以前問過的問題!根據答案,我從來沒有做到這一點。直到今天,我纔開始工作。我已經發布了對該答案的評論。 – ErJab 2010-02-10 18:35:55

2

我現在有了這個掙扎小時,終於到達了工作結構如下所示:

location /php-app { 
    passenger_enabled off; 
    alias /path/to/php-app/$1; 
    index index.php index.html; 
    try_files $uri $uri/ @rewrite; 
    } 

    location @rewrite { 
    rewrite ^/php-app(.*)$ /index.php?q=$1 last; 
    } 

location ~ \.php$ { 
    alias /path/to/php-app/$1; 
    rewrite ^/php-app(.*)$ $1 last; 
    passenger_enabled off; 
    fastcgi_pass unix:/tmp/php-fpm.socket; 
    fastcgi_index index.php; 
    include /etc/nginx/fastcgi_params; 
    fastcgi_param SCRIPT_FILENAME /path/to/php-app$fastcgi_script_name; 
    fastcgi_intercept_errors on; 
    } 
相關問題