子目录中的WordPress,使用子域Nginx的多站点

时间:2014-07-31 作者:Ihor Vorotnov

我通常在Nginx+PHP-FPM的子目录中运行WP(类似于Mark Jaquith\'s Skeleton) 没有任何问题,所有permalinks都工作正常。现在我试着用WordPress Multisite做这个,但遇到了一些问题。

我的wp配置。php设置:

// Give WordPress it\'s own directory
define( \'WP_SITEURL\', \'http://\' . $_SERVER[\'SERVER_NAME\'] . \'/core\' );
define( \'WP_HOME\', \'http://\' . $_SERVER[\'SERVER_NAME\'] );

// Use custom content directory
define( \'WP_CONTENT_DIR\', dirname( __FILE__ ) . \'/content\' );
define( \'WP_CONTENT_URL\', \'http://\' . $_SERVER[\'SERVER_NAME\'] . \'/content\' );
在文件系统中,它如下所示:

content/ - wp-content direcotry
    index.php
    languages/
    plugins/
    themes/
core/ - wordpress directory
    index.php
    wp-admin/
    wp-content/ - original folder, emppty
    wp-includes/
    ... - other wp core files
index.php
wp-config.php
对于Multisite,我希望有子域站点,例如:

one.example.com
two.example.com
three.example.com
网络安装后,我在根域上有一个主站点,即example.com, 但它切换到example.com/core, 这不是我需要的。How to remove this /core/ part from the main site frontend?

接下来,当我转到主站点管理时,它将通过example.com/core/wp-admin/ 这是正确的。但当我转到网络管理员时,它会切换到example.com/wp-admin/network/ 并显示“未找到”。如果我手动添加/core/ 作为ulr的一部分,它很有效。How to add /core/ part to Network Admin?

接下来,网络站点的问题。通过我创建的Firebug对html源代码进行了一些黑客攻击one.example.com. 这是前端工程。当我尝试访问后端时,它会转到one.example.com/wp-admin (这是错误的,丢失了/core/ 部分)和浏览器显示“页面未正确重定向”。如果我手动添加/core/ 零件和开口one.example.com/core/wp-admin/ 它显示管理页面,但样式和脚本当然丢失了。How to get subdomains admin working?

为了进一步澄清,正确的工作URL应该是:

http://example.com - main network site
http://example.com/core/wp-admin - main network site admin
http://example.com/core/wp-admin/network - network admin
http://one.example.com - some network site
http://one.example.com/core/wp-admin - some network site admin
以下是我当前的Nginx站点配置:

server {

    listen 80;
    server_name example.com *.example.com;
    root /var/www/example.com/httpdocs;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \\.php$ {
        fastcgi_split_path_info ^(.+\\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

}
当WP安装在中时,此配置可以很好地用于常规的单站点WordPress安装/core/ 目录。我已经删除了所有多站点特定的Nginx规则,以便能够从头开始。

我检查了数十个支持主题、Stackoverflow/Stackexchange问题、Nginx论坛等。尝试了不同的配置-无法运行。

感谢您的提示和帮助!

1 个回复
最合适的回答,由SO网友:Pat J 整理而成

听起来,WordPress Multisite不可能从WordPress-in-a子目录安装中获得子域网络:

WordPress必须从webfolder的根目录运行(即。public_html) 使子域正常工作。它们不会在子目录中工作
--Before You Create a Network

结束

相关推荐

Multisite and plugins options

我需要更多关于get_site_option(), update_site_option() 和add_site_option().在codex中,他们说它与单次安装相同,只是在多站点中,它返回网络范围的选项。好吧,但我对这一点感到困惑:这是否意味着一旦设置了网络范围选项,所有站点的选项都是相同的?还是每个站点都会覆盖它?我的意思是如果我这样做: update_site_option(\'option_group\', \'default_options());// default_options() r