AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 22632
Accepted
TheHippo
TheHippo
Asked: 2009-06-10 06:43:49 +0800 CST2009-06-10 06:43:49 +0800 CST 2009-06-10 06:43:49 +0800 CST

apache上的多个域(包括www-“子域”)?

  • 772

搞砸了一段时间后,我决定在这里问:

我有一个虚拟主机,想在这台服务器上使用 2 个域。我的 apache 配置文件如下所示:

NameVirtualHost *
<VirtualHost *>
    ServerName www.domain1.de   
    DocumentRoot /var/www/folder1/

</VirtualHost>

<VirtualHost *>
    ServerName www.domain2.de
    DocumentRoot /var/www/folder2/
</VirtualHost>

在我的虚拟主机域的配置页面上,两个域都分配给了服务器 ip。

现在的问题是:

  • www.domain1.de 作品
  • domain1.de 工作
  • www.domain2.de 作品
  • domain2.de不起作用_

有没有人知道为什么第二个域只适用于添加的“www”?

apache-2.2 configuration domain
  • 4 4 个回答
  • 7047 Views

4 个回答

  • Voted
  1. Best Answer
    therek
    2009-06-10T06:51:32+08:002009-06-10T06:51:32+08:00

    domain1.de有效,因为www.domain1.de它是第一个VirtualHost并且被用作默认值。您需要添加ServerAlias domain2.de到www.domain2.de以使较短的版本也能正常工作(您也应该添加)ServerAlias。www.domain1.de

    如果您不想www.domain1.de作为默认VirtualHost服务,请在开始提供一些简单的 HTML 文件时添加另一个。

    • 14
  2. Dan Udey
    2009-06-10T17:10:55+08:002009-06-10T17:10:55+08:00

    如果您想规范您的域(例如将所有 domain.de 重定向到 www.domain.de),您可以使用 mod_rewrite 之类的东西:

    <VirtualHost *>
      ServerName www.domain.de
      ServerAlias domain.de
    
      RewriteEngine On
      RewriteCond %{HTTP_HOST} !^www
      RewriteRule /(.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
    </VirtualHost>
    

    三个 Rewrite 行基本上将:

    1. 检查 URL 是否以“www”开头
    2. 如果没有,请重定向到http://www.domain.de/[whatever]

    如果您转到“domain.de”,它会看到它不是以“www”开头并重定向到“www.domain.de”。

    如果您想将此应用于您托管的每个站点,您可以这样做:

    <VirtualHost *>
      RewriteEngine On
      RewriteCond %{HTTP_HOST} !^www
      RewriteRule /(.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
    </VirtualHost>
    
    <VirtualHost *>
      ServerName www.domain1.de
      DocumentRoot /wherever/1
    </VirtualHost>
    
    <VirtualHost *>
      ServerName www.domain2.de
      DocumentRoot /wherever/2
    </VirtualHost>
    

    然后,当有人尝试访问“domain1.de”时,它会点击第一个虚拟主机,该虚拟主机会自动将他们重定向到“www.[whatever domain they type in]”。

    这样,如果您转到“domain1.de”,它会看到它不是以“www”开头并重定向到“www.domain1.de”。对于“domain2.de”,它将重定向到“www.domain2.de”。每次添加新站点时,您都​​会自动获得此功能,如果您要添加/维护大量网站,这将非常方便。

    • 5
  3. ceejayoz
    2009-06-10T06:54:22+08:002009-06-10T06:54:22+08:00

    www.domain.com 和 domain.com 理论上可以是完全不同的网站。您必须同时指定两者。您可以在现有的 VirtualHost 块中使用 ServerAlias,或者,您可以这样做来为 SEO 执行 301 重定向。

    NameVirtualHost *
    <VirtualHost *>
        ServerName domain1.de  
        DocumentRoot /var/www/folder1/
    </VirtualHost>
    
    <VirtualHost *>
        ServerName www.domain1.de  
        Redirect permanent / http://domain1.de/ 
    </VirtualHost>
    
    <VirtualHost *>
        ServerName domain2.de  
        DocumentRoot /var/www/folder2/
    </VirtualHost>
    
    <VirtualHost *>
        ServerName www.domain2.de  
        Redirect permanent / http://domain2.de/ 
    </VirtualHost>
    
    • 1
  4. Julien
    2009-06-10T15:54:33+08:002009-06-10T15:54:33+08:00

    使用 ServerAlias 将多个域关联到一个虚拟主机

    NameVirtualHost *
    <VirtualHost *>
        ServerName www.domain1.de 
        ServerAlias domain1.de *.domain1.de  
        DocumentRoot /var/www/folder1/
    </VirtualHost>
    
    <VirtualHost *>
        ServerName www.domain2.de
        ServerAlias domain2.de *.domain2.de  
        DocumentRoot /var/www/folder2/
    </VirtualHost>
    
    • 1

相关问题

  • 阿帕奇的替代品

  • 我必须在我的服务器上配置什么来提高默认安全性?

  • 如何强制我的网址始终以 www 开头?

  • 在 Linux Xen VPS 上优化 Apache 和 MySQL

  • mod_rewrite 不转发 GET 参数

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve