【问题标题】:apache map single subdomain to folderapache将单个子域映射到文件夹
【发布时间】:2012-07-16 10:03:44
【问题描述】:

在我的/var/www 中,我有许多网站(goodsite、badsite、uglysite)。现在他们被mydomain.com/goodsite等访问。

我想要的是一个站点,特别是丑陋的站点,由uglysite.mydomain.com 访问 - 其他站点保持原样。

我尝试了各种方式来摆弄.htaccess(在/var/www)。注意我启用了 mod-rewrite 并启用了 mod vhost-alias。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^uglysite\.mydomain\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/uglysite/
RewriteRule ^(.*)$ /uglysite/$1 [L]

最终发生的事情是 mydomain.com 和uglysite.mydomain.com 总是映射到同一个东西(即/var/www 处的索引)。我尝试添加一个新的虚拟主机,并惊讶地发现丑陋的站点.mydomain.com 映射正确,但 mydomain.com 也直接映射到丑陋的站点。

<Virtualhost uglysite.mydomain.com:80>
       ServerName uglysite.mydomain.com
       ServerAdmin www@localhost
       DocumentRoot "/var/www/"
       AccessFileName .htaccess
       <Directory "/var/www/uglysite">
               Order allow,deny
               Allow from All
               AllowOverride All
       </Directory>
</VirtualHost>

以上内容已添加到我的 sites-enabled/000-default 文件中。这让丑陋的site.mydomain.com 正常工作,但随后 mydomain.com 映射到同一个东西!

有没有一种简单的方法来做我打算做的事情?提前致谢。

【问题讨论】:

    标签: apache .htaccess mod-rewrite subdomain virtualhost


    【解决方案1】:

    你应该将丑陋的网站制作成第二个文件,而不是修改 000-default

    因此,复制 000-default 文件,按照您在此处所做的更改子域并将目录修改为 /path/to/site

    000-默认值:

    <Virtualhost *:80>
           ServerName mydomain.com
           ServerAdmin www@localhost
           ServerAlias mydomain.com
           DocumentRoot "/var/www/goodsite"
           AccessFileName .htaccess
           <Directory "/var/www/goodiste">
                   Order allow,deny
                   Allow from All
                   AllowOverride All
           </Directory>
    </VirtualHost>
    

    丑陋的网站:

    <Virtualhost *:80>
           ServerName uglysite.mydomain.com
           ServerAlias uglysite.mydomain.com
           ServerAdmin www@localhost
           DocumentRoot "/var/www/uglysite"
           AccessFileName .htaccess
           <Directory "/var/www/uglysite">
                   Order allow,deny
                   Allow from All
                   AllowOverride All
           </Directory>
    </VirtualHost>
    

    另请注意,在上述示例中,我已修改 DocumentRoot 以指向您希望从中提供文件的目录

    编辑:virtualhosts 设置为 *:80,因为您的网站无论如何都指向您自己的 ip

    【讨论】:

    • 您应该在 /etc/apache2/sites-available btw 中制作此文件,并将其符号链接 (ln -s sites-available/uglysite sites-enabled/uglysite) 使其启用站点
    • 我需要在任何地方明确包含它吗?
    • 完成配置后不要忘记将站点添加到 apache.conf 文件并重新启动 apache (sudo service apache2 restart)
    • 根据您设置 apache 服务器的方式,您可能需要也可能不需要将其包含在 apache.conf 中。检查末尾附近是否已经有Include sites-enabled/
    • 不幸的是,现在我遇到了最初的问题:现在,uglysite.mydomain.com 可以按照我的意愿完美运行,但现在 mydomain.com 也映射到了uglysite.mydomain.com!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 2010-09-30
    • 2015-02-24
    • 1970-01-01
    • 2013-02-04
    • 2017-07-07
    • 2012-12-09
    相关资源
    最近更新 更多