web-dev-qa-db-ja.com

サブフォルダーのようなURLを持つApache上の仮想ホスト

次のようなドメイン名を持つApache上のvhostを使用できるかどうかに興味があります:http://something.com/somethingまたはhttp:// {server-ip-address-here }/something

私はUbuntuサーバーでApache2.2.20を使用しています。これは私のホームサーバーであり、ここでいくつかのテストを行っています。ここにはDNSサーバーがなく、オープンdnsサービスから接続されているパブリックIPアドレスとドメイン名のみがあります。 。

それで、私は何をしましたか:

  1. / etc/Apache2/sites-availableに新しいファイル「demo」を作成しました
  2. 私はそこにこれを置きました(実際にはデフォルトファイルから変更を加えてコピーされています):

    <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>
    </ code>
  3. / etc/Apache2/sites-enabled /に、/ etc/Apache2/sites-available/demoを指すシンボリックリンクを作成しました

  4. 作成/ vhosts/demo/index.htmlファイル。

そして今、私が得たのは、{my-domain}に行くと、私が作成したvhostに行くということですが、問題は、{my-domain}/demoだけでなく、どのような場合でもサーバーが私をそこに指し示すことです。

結論として、異なる仮想ホストを作成し、それらを同じベースURLを持つ異なるURL(www.mydomain.com/vhost1、www.mydomain.com/vhost2など)にアタッチできるようにしたいと思います。

出来ますか?ありがとう:)

13
Jibla

まず、どのような場合でも、仮想ホストに*:80設定があるため、リクエストに一致するものがない場合は、最初の仮想ホストエントリが使用されます。

あなたが何をしようとしているのか理解できれば、それぞれの「仮想ホスト」にエイリアスを付けたいと思うかもしれません。

あなたがやろうとしていることは完全に仮想ホストではありませんが(少なくとも仮想ホストがやるべきこと)、Apacheのエイリアス機能を使用することでそれを達成できるかもしれません

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

したがって、使用するドメインは何でも、たとえば http://whatever.com/vhost1 または http://whatever.com/vhost2 両方のemは別々のサイトとして表示されます

16
jeffchong07