apache上的虚拟主机,URL类似于子文件夹

时间:2012-02-29 19:54:40

标签: apache ubuntu apache2 vhosts ubuntu-server

我感兴趣的是,如果我可以在apache上使用以下域名的vhost: http://something.com/something http:// {server-ip-address-here} / something

我在Ubuntu Server上使用Apache 2.2.20,这就是我的家庭服务器,我在这里测试一些东西,我这里没有任何DNS服务器,我所拥有的只是公共IP地址和附加到它的域名打开DNS服务。

那么,我做了什么:

  1. 我在 / etc / apache2 / sites-available
  2. 中创建了新文件“demo”
  3. 我把它放在那里(实际上它是从默认文件中修改而来的):

    <VirtualHost *:80>
       ServerAdmin webmaster@localhost
       ServerName  {mydomain-here}/demo/
       DocumentRoot /vhosts/demo
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /vhosts/demo/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            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 ${APACHE_LOG_DIR}/error.log
    
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn
    
    CustomLog ${APACHE_LOG_DIR}/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>
    </VirtualHost>
    

    <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName {mydomain-here}/demo/ DocumentRoot /vhosts/demo <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /vhosts/demo/> Options Indexes FollowSymLinks MultiViews AllowOverride None 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 ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/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> </VirtualHost>

  4. 在/ etc / apache2 / sites-enabled /中创建符号链接,指向/ etc / apache2 / sites-available / demo

  5. 创建了 /vhosts/demo/index.html 文件。

  6. 现在我得到的是,当我去{my-domain}时,我去了我创建的vhost,但问题是服务器在任何情况下指向我,不仅是{my-domain} / demo是什么我想要。

    总之,我希望我可以创建不同的虚拟主机并将它们连接到具有相同base-url的不同URL,例如www.mydomain.com/vhost1,www.mydomain.com/vhost2等。< / p>

    有可能吗? 谢谢:))

1 个答案:

答案 0 :(得分:16)

首先,它出现的原因是任何情况都是因为你的虚拟主机有*:80设置,所以如果没有任何东西与请求匹配,它会使用第一个虚拟主机条目

如果我理解你要做什么,看起来你可能只想为每个'虚拟主机'添加别名

您要做的不是虚拟主机(至少是虚拟主机应该做什么),但您可以通过使用apache的别名功能来实现它

Alias /vhost1 /whatever/folder/your/vhost1/site/is/at
Alias /vhost2 /whatever/folder/your/vhost2/site/is/at

现在您使用的任何域名,例如http://whatever.com/vhost1http://whatever.com/vhost2 这两个em将显示为单独的站点