Apache 2站点可用配置

Sch*_*iss 5 apache virtual hosts

我试图在一个Apache服务器上写下大约5个网站,这些服务器都在一个IP地址上.

例如:

  • 在/ var/WWW/site1的
  • 在/ var/WWW /站点2
  • 在/ var/WWW/site3
  • 在/ var/WWW/site4
  • 在/ var/WWW/site5

但是,如果我在网站2上创建一个链接,仅使用,例如./index.php,你会期望它在/var/www/site2/index.php中查找...但它实际上解析为/var/www/index.php.

无论如何设置Apache以了解单独的站点文件夹需要表现并解析到单独的文件夹?

这是我目前的网站可用文件.我相信一个相当默认的设置:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride all
            Order allow,deny
            allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
Run Code Online (Sandbox Code Playgroud)

任何帮助都会被贬低.

非常感谢你.

安德鲁巴洛

Zeo*_*rad 11

你需要一个ServerName指令<VirtualHost>.它将告诉服务器当前正在使用哪个虚拟主机,具体取决于浏览器请求(如果您的客户端访问http://site1.example.comhttp://site2.example.com,它们将连接到相同的IP,因此服务器,但请求包含原始请求URL).你必须复制你的<VirtualHost>块才能拥有一个托管网站.每个块的主要区别在于ServerName和DocumentRoot.您可以使用"apache2ctl -S"来查看apache如何理解您的虚拟主机设置.

您可以使用包含此类内容的单个文件:

<VirtualHost *:80>
  ServerName site1.myserver.com
  DocumentRoot /var/www/site1
  ...
</VirtualHost>

<VirtualHost *:80>
  ServerName site2.myserver.com
  DocumentRoot /var/www/site2
  ...
</VirtualHost>

<VirtualHost *:80>
  ServerName site3.myserver.com
  DocumentRoot /var/www/site3
  ...
</VirtualHost>

<VirtualHost *:80>
  ServerName site4.myserver.com
  DocumentRoot /var/www/site4
  ...
</VirtualHost>

<VirtualHost *:80>
  ServerName site5.myserver.com
  DocumentRoot /var/www/site5
  ...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

当然,也许可以肯定所有这些名称的dns最终都会出现在您的IP上.它不需要是子域,只要它们落在你的服务器ip上并且你有一个对应的ServerName.如果您需要单个站点的额外名称,可以在ServerName下面添加"ServerAlias secondname.myserver.com thirdname.myserver.com"