在LAMP上启用wordpress多用户时的rewrite rule已经很完善了。最近尝试在LNMP上搭建wordpress多用户系统,费了一番力气~
难点主要在nginx的rewrite rule上面。网上搜了很多种写法,尝试了几次都不起作用,下面贴出一个我自己测试起作用的nginx rewrite rule,也是在网上搜到的…
nginx站点配置文件/usr/local/nginx/conf/vhost/domain.ltd.conf中server_name 加入泛域名
server { listen 80; server_name *.moioi.com; index index.html index.htm index.php default.html default.htm default.php; root /home/wwwroot/www.maxiang.net; include wordpress.conf; location ~ .*.(php|php5)?$ { fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; include fcgi.conf; } location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*.(js|css)?$ { expires 12h; } log_format www.moioi.com '$remote_addr - $remote_user [$time_local] $request ' '$status $body_bytes_sent $http_referer ' '$http_user_agent $http_x_forwarded_for'; access_log /home/wwwlogs/moioi.log www.moioi.com; }
其中红色字体的wordpress.conf在站点配置文件的上一级目录,wordpress.conf是本篇文章的核心,内容修改如下: 请看本文最后的更新~
location / { if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filename){ rewrite (.*) /index.php; } }
保存之后,重启nginx: /usr/local/nginx/sbin/nginx -s reload
然后登录wordpress控制后台,右上角的admin下拉菜单里有一个Site Admin即站点管理员,这样就可以创建新的子站点了。
参考链接:[WordPress] Enable WordPress MultiSite (SubDomain) With Nginx
关于启用wordpress多用户network可以看wordpress公园的着两篇文章:
2012年1月13日 凌晨3点更新
在使用本文的nginx rewrite rule时,出现了一个问题,即:
在wordpress 多用户环境下创建第二个博客之后,在第二个博客里上传图片,会出现图片不显示的问题。首先检查了第二个博客的upload path,upload url path设置正确。那极有可能是rewrite rule出了问题。
经过多番搜索,解决方案如下(参考链接):
在本文第一个配置文件nginx.conf中的#include wordpress.conf 用
[cc lang=”bash”]
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 last;
}
[/cc]替换。
把wordpress.conf删除。
奇怪的是,这段代码无法单独放在wordpress.conf里。如果单独放在wordpress.conf里的话,会不起作用。