VirtualDocumentRoot 域和子域

Posted

技术标签:

【中文标题】VirtualDocumentRoot 域和子域【英文标题】:VirtualDocumentRoot Domains and Subdomains 【发布时间】:2014-02-24 01:20:14 【问题描述】:

普通域和子域可以有 VirtualDocumentRoot 吗?

http://www.example.com/ or http://example.com

用途:

/var/www/example.com/

http://*.example.com

用途

/var/www/example.com/subdomains/*

到目前为止我所拥有的: Pastebin - VirtualDocumentRoot Domains and Subdomains

除子域外,普通域都可以工作,似乎它总是重定向到普通域。我使用的这些信息来自*** - Apache-multiple-virtualdocumentroot

# get the server name from the Host: header
UseCanonicalName Off

# this log format can be split per-virtual-host based on the first field
LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
CustomLog logs/access_log vcommon

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName domain.com
    ServerAlias www.domain.com domain.com
    VirtualDocumentRoot /var/www/%-2.0.%-1/web

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel debug
    ErrorLog /var/log/apache2/vhosts-error.log
    CustomLog /var/log/apache2/vhosts-access.log combined

    ServerSignature On
</VirtualHost>
<VirtualHost *:80>
    ServerName domain.com
    ServerAlias *.domain.com
    VirtualDocumentRoot /var/www/%-2.0.%-1/subdomains/%-3
</VirtualHost>

更新 v2 [为我工作,直到现在忽略子域..]

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com example.com
    Options Indexes FollowSymLinks

    VirtualDocumentRoot /var/www/%-2_%-1/web/

    <Directory />
            AllowOverride none
    </Directory>

    <Directory "/var/www/*/web/">
        RewriteEngine on
        RewriteBase /
        # If a directory or a file exists, use it directly
        RewriteCond %REQUEST_FILENAME !-f
        RewriteCond %REQUEST_FILENAME !-d
        # Otherwise forward it to index.php
        RewriteRule . index.php [L]


        <Files sitemap.xml>
            RewriteEngine Off
        </Files>
    </Directory>


        LogLevel debug
        ErrorLog /var/log/apache2/vhosts-error.log
        CustomLog /var/log/apache2/vhosts-access.log combined
</VirtualHost>

【问题讨论】:

【参考方案1】:

您可以在服务器上为每个域和/或子域指定一个文件夹 :) 有关示例,请参阅 http://httpd.apache.org/docs/current/vhosts/examples.html

如果您遇到子域或域的问题,请检查您的 DNS 记录,以查看您的域是否启用了子域。否则,使用您的子域或 *.doamin.com 之类的别名添加“A”记录 基本上,它的作用是将子域指向您的服务器 IP 地址。

查看这篇文章以获得简单的 DNS 指南:https://support.google.com/a/answer/48090?hl=en

【讨论】:

使用 VirtualDocumentRoot 我想防止标准域集成的重复,另请参阅我的粘贴 bin 代码。我正在使用 A 记录。 你试过调试你的主机文件吗?使用 'httpd -S' 或 'apache2ctl -S' 或 alternativ 'APACHE_RUN_USER=www-data APACHE_RUN_GROUP=www-data /usr/sbin/apache2 -S' 您应该根据您的服务器配置添加自己的路径。 找到此线程以获取有关调试的信息:***.com/questions/5474477/… @:/var/www$ sudo apache2 -t 未定义配置变量 $APACHE_LOCK_DIR 未定义配置变量 $APACHE_PID_FILE 未定义配置变量 $APACHE_RUN_USER未定义配置变量 $APACHE_RUN_GROUP 未定义配置变量 $APACHE_LOG_DIR 未定义配置变量 $APACHE_LOG_DIR 未定义 AH00526:/etc/apache2/apache2.conf 第 74 行的语法错误:互斥量目录无效在参数文件中:$APACHE_LOCK_DIR 定义的变量不应该是问题,因为它们是通过运行 apache2 初始化的,但互斥目录似乎没问题.. 别忘了我可以访问网页,只有子域链接到主域而不是文件夹子域

以上是关于VirtualDocumentRoot 域和子域的主要内容,如果未能解决你的问题,请参考以下文章

每个域和子域的 Plesk nginx 配置

域和子域的 PHP 会话

单个 Pyramid 实例上的多个域和子域

搜索域和子域的所有 DNS TXT 记录

域和子域之间的 Firebase 身份验证共享

具有多个域和子域的 PHP 身份验证