bigwoo 发表于 2011-9-28 18:07:27

LNMPA 如何實現 Wordpress Multi Site?

:Q

我有個 Multi Site 的 Wordpress 網站,新增一個 site1.mydomain.com 之後,上傳的圖像都會顯示nginx的 404 Not Found...
而 Wordpress 提供的 Multi Site ..htaccess 內容如下:RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ -

# uploaded files
RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1

RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ -
RewriteRule . index.php 而我試著去修改 nginx 的 vhost 設定檔,把location ~* ^.*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
        expires      30d;
        }修改為location ~* ^.*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
        expires      30d;
        rewrite ^files/(.+)$/wp-includes/ms-files.php?file=$1 last;
}結果還是 nginx的 404 Not Found...

而我把
location ~ .*\.(php|php5)?$
修改為
location ~ .*\.(php|php5|gif|jpg|jpeg|png|bmp|swf)?$
這樣子單獨跑Apache就可以顯示圖像...

不知道在LNMPA環境下要如何修改 rewrite 才能實現 Wordpress Multi Site?

bigwoo 发表于 2011-9-28 18:16:05

補充說明一下:
Wordpress Multi Site 會將子網站上傳的圖像放置在 wp-content/blogs.dir 底下,
而經過RewriteRule 之後網址為
http://site1.mydomain.com/files/2011/09/upload.png=> wp-content/blogs.dir/2/wp-content/blogs.dir/2/files/2011/09upload.png

不知道 nginx 的 RewriteRule 該如何寫? :L

licess 发表于 2011-9-28 18:43:41

伪静态不太了解,只要是apache上能用的伪静态,lnmpa上应该也会没问题

yuweitaocn 发表于 2011-9-29 10:44:50

把你原来的那一些伪静态都写在APACHE上面就可以了。

yuweitaocn 发表于 2011-9-29 10:53:08

不对的喔。他的这一个是要经过INDEX.PHP的这一个文件的请求才会有JPG等文件的解析,楼主这一个让他直接去找JPG肯定不行。

yuweitaocn 发表于 2011-9-29 10:57:47

location / {
      root   /var/www/example.com/wordpress;
      indexindex.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_pass127.0.0.1:9000;
      fastcgi_index index.php;
      fastcgi_paramSCRIPT_FILENAME/var/www/example.com/wordpress$fastcgi_script_name;
    }
}


这一个是老外写的。。看着貌似可行

yuweitaocn 发表于 2011-9-29 10:59:03

其实若是楼主的访问量并不是很大的话..没有必要做这一个图片的缓存处理...只要把所有的请求都转发给APACHE就可以了

bigwoo 发表于 2011-9-30 14:25:09

原帖由 yuweitaocn 于 2011-9-29 10:59 发表 https://bbs.vpser.net/images/common/back.gif
其实若是楼主的访问量并不是很大的话..没有必要做这一个图片的缓存处理...只要把所有的请求都转发给APACHE就可以了

我目前就是把所有請求都轉發給APACHE了...目前運作都正常
但是可惜了NGINX沒法幫我處理圖片的部分...很難保證以後訪問量越來越大的時候會不會有問題了,
畢竟已經是要做wordpress Multi Site,也就是說到時候會有很多站台同時運作,就很有可能有些站台比較熱門,請求量比較大!

yuweitaocn 提到老外的方法,似乎是將PHP的請求也丟給nginx與fast-cgi了...這個方法在lnmp是可行的...但是回到lnmpa應該不行了吧?

yuweitaocn 发表于 2011-9-30 22:46:30

回复 8# 的帖子

从理论上来讲是可以的。你完全可以把CGI看成是一个APACHE而已。
页: [1]
查看完整版本: LNMPA 如何實現 Wordpress Multi Site?