VPS侦探论坛

 找回密码
 注册
查看: 8011|回复: 8

LNMPA 如何實現 Wordpress Multi Site?

[复制链接]
发表于 2011-9-28 18:07:27 | 显示全部楼层 |阅读模式



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

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

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

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

不知道在LNMPA環境下要如何修改 rewrite 才能實現 Wordpress Multi Site?
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
 楼主| 发表于 2011-9-28 18:16:05 | 显示全部楼层


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

不知道 nginx 的 RewriteRule 該如何寫?
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
发表于 2011-9-28 18:43:41 | 显示全部楼层

伪静态不太了解,只要是apache上能用的伪静态,lnmpa上应该也会没问题
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
发表于 2011-9-29 10:44:50 | 显示全部楼层



把你原来的那一些伪静态都写在APACHE上面就可以了。
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
发表于 2011-9-29 10:53:08 | 显示全部楼层

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

军哥运维代购:http://shop63846532.taobao.com/

发表于 2011-9-29 10:57:47 | 显示全部楼层

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


这一个是老外写的。。看着貌似可行
发表于 2011-9-29 10:59:03 | 显示全部楼层

其实若是楼主的访问量并不是很大的话..没有必要做这一个图片的缓存处理...只要把所有的请求都转发给APACHE就可以了
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
 楼主| 发表于 2011-9-30 14:25:09 | 显示全部楼层

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


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

yuweitaocn 提到老外的方法,似乎是將PHP的請求也丟給nginx與fast-cgi了...這個方法在lnmp是可行的...但是回到lnmpa應該不行了吧?
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
发表于 2011-9-30 22:46:30 | 显示全部楼层

回复 8# 的帖子



从理论上来讲是可以的。你完全可以把CGI看成是一个APACHE而已。
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|VPS侦探 ( 鲁ICP备16040043号-1 )

GMT+8, 2024-11-15 19:34 , Processed in 0.027938 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表