2010-02-10 29 views
13

Tôi có trang web chính và wordpress trong các thư mục khác nhau trên máy chủ của tôi mà tôi sử dụng nginx làm máy chủ web. Trang web chính nằm trong/home/me/www và Wordpress nằm trong/home/me/wordpress. Tôi cần phải có chúng trong các thư mục riêng biệt theo cách này vì một lý do cụ thể. Làm cách nào để chỉ định điều này trong tệp cấu hình nginx? Tôi hiện có sau và nó không hoạt động:Cung cấp các tệp php từ các vị trí khác nhau trong nginx

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; 
} 

Nó hiện trả về HTTP 404 khi tôi cố gắng để truy cập http://mydomain/blog

Trả lời

11

Check-out this questionNginx Manual.

Hãy thử thay đổi dòng blog của bạn để:

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

Cảm ơn bạn đã trả lời! Trên thực tế, câu hỏi mà bạn đã chỉ ra là câu hỏi mà tôi đã hỏi một thời gian dài! Tôi chưa bao giờ làm việc dựa trên câu trả lời. Chỉ hôm nay tôi mới bắt đầu làm việc. Tôi đã đăng bình luận về câu trả lời đó. – ErJab

2

tôi vật lộn với điều này trong nhiều giờ ngay bây giờ và cuối cùng đạt đến cấu hình làm việc như sau:

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; 
    } 
Các vấn đề liên quan