首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wordpress MU子域vhost

Wordpress MU子域vhost
EN

WordPress Development用户
提问于 2011-06-01 07:22:14
回答 3查看 2.9K关注 0票数 0

好的,我有我的mu设置了子域,需要一个子域来指向另一条路径。我的问题是,当我添加vhost文件时,它会在wordpress之前加载,并为所有在vhosts中没有指定路径的内容加载路径。但是如果我在wordpress域安装后加载,那么它将尝试为输入的子域创建一个站点。

我需要的是:

代码语言:javascript
复制
 sub2.mydomain.com - points to /path/to/sub/directory

代码语言:javascript
复制
 \*.mydomain.com - points to /path/to/wordpress/install

更新:

我正在使用一个域映射插件,我认为这是导致我的问题。所有子站点都加载良好,但当我将映射域加载到子站点时,它不工作。

我不能每次都将映射的域添加到vhost配置中,因为我计划允许其他人映射域。

EN

回答 3

WordPress Development用户

回答已采纳

发布于 2011-06-08 06:32:56

由于我的域映射插件不执行cname (wpmudev域映射),所以我不能使用cname建议。至于ip地址,这是未经测试的,因为我不想在这个时候增加更多的托管账单,也许在这个特性中,我尝试一下。命令vhost并分配别名是有效的,但正如我在前面的评论中所说,我计划允许其他用户映射一个域名,这意味着每次注册时我都必须手动添加它。

我的解决办法是:

我创建了一个带有我选择的子域的wp站点,然后在wp根文件夹中创建了一个sym链接(我知道我可以从任何站点访问,但没有多少人不会访问),所以当我输入subdomain1.mydomain.com/analytics时,它将加载分析,对我的问题跟踪脚本也是如此。通过创建站点,我可以创建一个显示可以访问的服务列表的页面。

感谢约翰·P·布洛赫的帮助,我知道这并不是一个完全的WordPress问题,但由于是我的域映射插件,对我来说也足够了,谢谢,EAMann,这是可行的,但就像我上面说的,我每次都需要创建一个S别名。

票数 0
EN

WordPress Development用户

发布于 2011-06-03 00:04:50

基本上,您需要两个专用IP地址,或者第三个vhost。

IP地址

您可以使用两个IP地址并在apache配置中执行类似的操作:

代码语言:javascript
复制
#IP address for WP
NameVirtualHost 12.34.56.78:80
#For everything else
NameVirtualHost *:80

然后,确保VirtualHost for WordPress是这样声明的:

代码语言:javascript
复制
<VirtualHost 12.34.56.78:80>

以及在VirtualHost之前声明的所有其他WordPress块都使用另一个:

代码语言:javascript
复制
<VirtualHost *:80>

那应该管用。我根本没有测试过这个,所以它可能不管用。另外,我不确定在第二个NameVirtualHost行中使用星号是否有效;再次:未经测试。

CNAME

假设您的域映射插件允许这样做,则使用路由映射域的“cname”方法,而不是“IP”方法。使用类似于“map.domain.com”的内容,并将域映射为cname (这将阻止它们使用其域的根,但它们应该能够将example.com重定向到www.example.com)。

为'map.domain.com‘添加另一个map.domain.com条目,作为第一个vhost条目,镜像域的主vhost条目,具体来说是:文档根。

同样,这也是未经测试的。

子域配置(旧答案)

我将以我自己站点的虚拟主机文件为例。所有这些都在一个文件中:

代码语言:javascript
复制
# Virtual host for the subdomain first
<VirtualHost *:80>
    ServerAdmin admin@test.jpb
    ServerName drupal.johnpbloch.com
    # Note that the document root and all other paths are different from the domain's primary virtual host below.
    DocumentRoot /path/to/subdomain/directory/htdocs/
    ErrorLog /path/to/subdomain/directory/logs/error.log
    CustomLog /path/to/subdomain/directory/logs/access.log combined
    <Directory /path/to/subdomain/directory/htdocs/>
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
# Virtual host for the main site next
<VirtualHost *:80>
    ServerAdmin admin@test.jpb
    ServerName johnpbloch.com
    ServerAlias www.johnpbloch.com
    ServerAlias *.johnpbloch.com
    DocumentRoot /path/to/main/site/directory/htdocs/
    ErrorLog /path/to/main/site/directory/logs/error.log
    CustomLog /path/to/main/site/directory/logs/access.log combined
    <Directory /path/to/main/site/directory/htdocs/>
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

这不一定都在一个文件中;重要的是Apache首先加载更具体的虚拟主机。这意味着在任何ServerAlias值中没有通配符的虚拟主机必须在任何具有这些通配符值的虚拟主机之前加载。

没有价值,没有设置,也没有任何您可以使用的、在WordPress内部或周围可以解决问题的方法。当请求到达WordPress时,已经太晚了。Apache已经加载了虚拟主机,解析了主机,并将始终以它所做的方式路由通信量。如果流量到达了WordPress,而它不应该是,这是一个服务器配置问题。不是WordPress。

票数 3
EN

WordPress Development用户

发布于 2011-06-07 20:41:06

我在服务器上也碰到了这个问题,我可以向你保证约翰的回答是正确的。为了证明这一点,下面是我自己的Apache文件中的vhost部分:

代码语言:javascript
复制
<VirtualHost *:80>
    ServerName prosepainting.com
    ServerAlias www.prosepainting.com *.prosepainting.com
    DocumentRoot /var/www/html/eamann
</VirtualHost>
<VirtualHost *:80>
    ServerName mindsharestrategy.com
    ServerAlias www.mindsharestrategy.com *.mindsharestrategy.com
    DocumentRoot /var/www/html/eamann
</VirtualHost>
<VirtualHost *:80>
    ServerName groundedchristianity.com
    ServerAlias www.groundedchristianity.com *.groundedchristianity.com
    DocumentRoot /var/www/html/eamann
</VirtualHost>
<VirtualHost *:80>
    ServerName prose.eamann.com
    DocumentRoot /var/www/html/eamann
</VirtualHost>
<VirtualHost *:80>
    ServerName business.eamann.com
    DocumentRoot /var/www/html/eamann
</VirtualHost>
<VirtualHost *:80>
    ServerName git.eamann.com
    DocumentRoot /home/git/repositories
</VirtualHost>
<VirtualHost *:80>
    ServerName eamann.com
    ServerAlias www.eamann.com *.eamann.com
    DocumentRoot /var/www/html/eamann
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot /var/www/html
</VirtualHost>

我以这种方式设置它,因为我将有选择地打开和关闭每个映射域进行测试。但是我的WordPress安装中的所有站点都是eamann.com的子域,并通过*.eamann.com声明映射到正确的位置。为了设置映射域,我还需要添加它们。

为了使事情更简单,此配置将执行完全相同的操作:

代码语言:javascript
复制
<VirtualHost *:80>
    ServerName git.eamann.com
    DocumentRoot /home/git/repositories
</VirtualHost>
<VirtualHost *:80>
    ServerName eamann.com
    ServerAlias www.prosepainting.com *.prosepainting.com www.mindsharestrategy.com *.mindsharestrategy.com www.groundedchristianity.com *.groundedchristianity.com www.eamann.com *.eamann.com
    DocumentRoot /var/www/html/eamann
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot /var/www/html
</VirtualHost>

我的git.eamann.com域被定向到一个位置( Git存储库文件夹),但是WordPress仍然会看到所有其他子域,我映射的域也会指向WordPress。

票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/18918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档