使用nginx在子目录中使用WordPress安装

时间:2015-12-17 15:12:31

标签: wordpress nginx rewrite

基本上我有一个名为example.com的网站。在这个网站中,有一个WordPress-Blog,可以在“example.com/blog/”下访问。安装博客的实际目录不是“/ blog /”,而是“/ blog / de /”,因为该项目有多个不同语言的独立博客。

问题是,WordPress无法访问wp-content和wp-include文件,因为WordPress尝试通过example.com/blog/wp-content/....

所以我想让我的博客在“example.com/blog”下运行,但所有WordPress文件都应该从/ blog / de /.

加载

这是我的/ blog-Location的

 location /blog {

    index index.php;
    try_files $uri $uri/ /de/index.php?$args;
    rewrite ^(/wp-content/.*)$ /de/wp-content/$1 last;
    rewrite ^/blog/(.*)+$ /blog/de/index.php?$1;
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;     

我是nginx的新手,所以欢迎所有可能的解决方案!

1 个答案:

答案 0 :(得分:0)

基本上,您需要将位置/blog替换为路径/blog/de。复杂的是处理PHP文件的方式,特别是当其他应用程序托管在同一个域中时。

首先在内部将/blog重写为/blog/de

location /blog {
    rewrite ^/blog(.*)$ /blog/de$1 last;
}

然后使用嵌套位置实现/blog/de位置以处理PHP:

set $wordpress /blog/de/index.php;

location ^~ /blog/de {
    # root inherited from server container???
    index index.php;
    try_files $uri $uri/ $wordpress;

    location ~ \.php$ {
        try_files $uri $wordpress;
        include         fastcgi_params;
        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass    ...;
    }
}

我使/blog/de成为优先级前缀位置,以避免与任何其他php位置发生冲突。但如果这是此服务器块中的唯一应用程序,则不需要这样做。