带有域映射的WordPress多站点和具有伪域名的本地虚拟主机

时间:2016-03-04 作者:stormchaser

我到处搜索,找到了很多关于如何设置多站点、域映射,甚至在本地机器上使用虚拟主机的教程,但我似乎找不到所有这些的方法。

我想让WordPress multisite在我的本地主机上使用假域名运行,比如mysite-1。dev,mysite-2。dev,mysite-3。开发等。

我正在Windows机器上使用Apache运行XAMPP。在httpd-vhosts 文件,我必须为假域指定一个文件夹,但如果我使用的是WordPress multisite,我不确定如何使用它。

这是我的httpd-vhost 文件:

<VirtualHost *:80>
    DocumentRoot "C:/home/mysite-1"
    ServerName mysite-1.dev
    Alias /mysite-1.dev "/home/mysite-1"
<Directory "/home/mysite-1">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/home/mysite-2"
    ServerName mysite-2.dev
    Alias /mysite-2.dev "/home/mysite-2"
<Directory "/home/mysite-2">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/home/mysite-3"
    ServerName mysite-3.dev
    Alias /mysite-3.dev "/home/mysite-3"
<Directory "/home/mysite-3">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>
</VirtualHost>
在我的主机文件中,我有:

127.0.0.1   mysite-1.dev
127.0.0.1   mysite-2.dev
127.0.0.1   mysite-3.dev
我已经在WordPress中设置了多站点,并输入了wp-config.php.htaccess 根据需要创建文件。

wp-config.php文件如下:

define(\'WP_ALLOW_MULTISITE\', true);
define(\'MULTISITE\', true);
define(\'SUBDOMAIN_INSTALL\', true);
define(\'DOMAIN_CURRENT_SITE\', \'mysite-1.dev\');
define(\'PATH_CURRENT_SITE\', \'/\');
define(\'SITE_ID_CURRENT_SITE\', 1);
define(\'BLOG_ID_CURRENT_SITE\', 1);
define( \'SUNRISE\', \'on\' );
define(\'WP_TEMP_DIR\',ABSPATH.\'wp-content/uploads/\');
以及.htaccess 具体如下:

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\\.php)$ $1 [L]
RewriteRule . index.php [L]
# END WordPress
当我转到mysite-2时,通过这种方式进行设置。dev和mysite-3。dev,它在文件夹中查找,但中没有任何内容c:/home/mysite-2.devc:/home/mysite-3.dev, 所以它显示了一个错误:

调用未定义的函数wp\\u get\\u current\\u user()。

在里面c:/home/mysite-1.dev, 它有所有WordPress多站点文件、插件、主题等,所以工作正常。

我知道这可能是一个配置问题,但我不确定如何正确设置。有人能告诉我使用假域和域映射设置WordPress多站点的正确方向吗?

提前谢谢大家!

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

DocumentRoot 对于每个VirtualHost 应该指向安装WP multisite的目录。子网站没有实际的目录,它们都是虚拟的。

使用您的示例:

<VirtualHost *:80>
    DocumentRoot "C:/home/wp-intall-directory"
    ServerName mysite-1.dev
    # not required Alias /mysite-1.dev "/home/mysite-1"
    <Directory "/home/wp-intall-directory">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/home/wp-intall-directory"
    ServerName mysite-2.dev
    # not required Alias /mysite-2.dev "/home/mysite-2"
    <Directory "/home/wp-intall-directory">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
.
.
.