2010-08-16 39 views
7

Tôi đang cố gắng chạy một cài đặt blog đa miền với WordPress và Nginx. Bước cuối cùng là cấu hình một số quy tắc viết lại trong .htaccess (chỉ apache) cho máy chủ web. Làm thế nào để dịch nó thành quy tắc viết lại Nginx?Quy tắc viết lại nhiều trang WordPress trong Nginx

RewriteEngine On 
RewriteBase/

RewriteRule ^index\.php$ - [L] 

# uploaded files 
RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L] 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 
RewriteRule . index.php [L] 

Trả lời

9

nginx rewrite rules example for Wordpress 3:

server{ 
    server_name *.example.com; 
    listen 80; 
    #on server block 
    ##necessary if using a multi-site plugin 
    server_name_in_redirect off; 
    ##necessary if running Nginx behind a reverse-proxy 
    port_in_redirect off; 
    access_log /var/log/nginx/example-com-access.log; 

    location/{ 
     root /var/www/example.com/wordpress; 
     index index.html index.htm index.php; 
     rewrite ^.*/files/(.*)$ /wp-includes/ms-files.php?file=$1 last; 
     if (!-e $request_filename) { 
      rewrite ^.+/?(/wp-.*) $1 last; 
      rewrite ^.+/?(/.*\.php)$ $1 last; 
      rewrite ^(.+)$ /index.php?q=$1 last; 
     } 
    } 

    location ~* ^.+\.(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ 
    { 
     root /var/www/example.com/wordpress; 
     rewrite ^/.*(/wp-.*/.*\.(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js))$ $1 last; 
     rewrite ^.*/files/(.*(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js))$ /wp-includes/ms-files.php?file=$1 last; 
     expires 30d; 
     break; 
    } 

    location ~ wp\-.*\.php|wp\-admin|\.php$ { 
     include /etc/nginx/fastcgi_params; 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME /var/www/example.com/wordpress$fastcgi_script_name; 
    } 
} 
+0

đó chính xác là những gì tôi cần .. thx! – jdelard

3

Trên thiếu không gian sau khi viết lại ^. . /files/( (html | jpg | ....... bạn cần một không gian sau khi $ và trước /wp-includes/ms-files.php Cheers

0

Thay vì:

.!
location ~ wp\-.*\.php|wp\-admin|\.php$ { 

Thay đổi nó để:

location ~ .php$ 

cho phép nó để chỉ đạo

blog.com/wp-admin 

để

blog.com/wp-admin/ 
1

Quy tắc viết lại nginx cho WordPress đã giải quyết được vấn đề của tôi một cách hoàn hảo, bao gồm việc thay đổi ex.com/wp-admin thành ex.com/wp-admin/.

Nhưng tôi đã tìm thấy một lỗi bên trong mà lãng phí cho tôi vài giờ như sau: Nếu url tĩnh bao gồm .html giống như /%category%/%post_id%.html, bạn phải insted của:

location ~* ^.+\.(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ 
 
    { 
 
     root /var/www/example.com/wordpress; 
 
     rewrite ^/.*(/wp-.*/.*\.(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js))$ $1 last; 
 
     rewrite ^.*/files/(.*(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js))$ /wp-includes/ms-files.php?file=$1 last; 
 
     expires 30d; 
 
     break; 
 
    }

Thay đổi nó thành:

location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ 
 
    { 
 
     root /var/www/example.com/wordpress; 
 
     rewrite ^/.*(/wp-.*/.*\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js))$ $1 last; 
 
     rewrite ^.*/files/(.*(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js))$ /wp-includes/ms-files.php?file=$1 last; 
 
     expires 30d; 
 
     break; 
 
    }

Hoặc, bạn sẽ gặp lỗi 'không tìm thấy trang 404' trong các trang nội dung!

Các vấn đề liên quan