6

私は、すべて1つのIPアドレス上にある1つのApacheサーバー上にすべて約5つのWebサイトを書き込もうとしています。

例えば:

  • / var / www / site1
  • / var / www / site2
  • / 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>

どんな助けでも感謝されるでしょう。

よろしくお願いします。

アンドリュー・バーロウ

4

2 に答える 2

11

内に ServerName ディレクティブが必要です<VirtualHost>。ブラウザのリクエストに応じて、現在使用されている仮想ホストをサーバーに通知します(クライアントがhttp://site1.example.comまたはhttp://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>

もちろん、これらすべての名前の dns が最終的に IP に到達することは確実です。サブドメインがサーバー IP に到達し、それに対応する ServerName を持っている限り、サブドメインである必要はありません。1 つのサイトに追加の名前が必要な場合は、ServerName の下に「ServerAlias secondname.myserver.com thirdname.myserver.com」を付けて追加できます。

于 2009-12-21T12:08:44.430 に答える
3

@Zeogradの答えはおそらくほとんどのソリューションで正しい答えですが、同様の問題があり、a2enmodコマンドで書き換えモジュールを有効にするだけで済みました。

これは、Ubuntuのコマンドラインから実行したものです:

sudo a2enmod rewrite
sudo service apache2 restart

sudo service apache2 restartうまくいかない場合は、次を試してください。

sudo /etc/init.d/apache2 restart
于 2014-05-23T04:22:46.157 に答える