私のサーバー情報は
Server version: Apache/2.4.6 (CentOS)
Server built: Nov 19 2015 21:43:13
同じサーバーでホストされているbiz.example.comとpin.example.comという2つの異なるサイトの仮想ホスティングを構成しようとしています。 「var/www/html/」の下には、「biz」と「pin」という2つの異なるフォルダがあります。これには、上記の2つのウェブサイトの重要なプロジェクトファイルが含まれています。以下のように設定しようとしています。
/etc/hosts 以下の設定で
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
xxx.xxx.xxx.xxx biz.example.com
xxx.xxx.xxx.xxx pin.example.com
xxx.xxx.xxx.xxxをサーバーのIPアドレスに置き換えます。
/etc/httpd/conf/httpd.confから
IncludeOptional sites-enabled/*.conf
これで、/etc/httpd/sites-available の下に biz.conf と pin.conf ファイルがあります。また、次のコマンドを使用して、サイトアクティベーションフォルダを指す2つのbiz.confファイルとpin.confファイルを含む/ etc / httpdの下にサイトアクティベーションフォルダを有効にしました。
ln -s /etc/httpd/sites-available/biz.conf /etc/httpd/sites-enabled/biz.conf
ln -s /etc/httpd/sites-available/pin.conf /etc/httpd/sites-enabled/pin.conf
biz.confには次の内容があります
<VirtualHost *:80>
ServerName http://biz.example.com/
ServerAlias http://biz.example.com/
DocumentRoot "/var/www/html/biz"
<directory "/var/www/html/biz">
Options Indexes FollowSymLinks
AllowOverride all
Order Deny,Allow
Allow from 127.0.0.1
</directory>
</VirtualHost>
pin.conf ファイルの構成は次のように言及されます。
<VirtualHost *:80>
ServerName http://pin.example.com/
ServerAlias http://pin.example.com/
DocumentRoot "/var/www/html/pin"
<directory "/var/www/html/pin">
Options Indexes FollowSymLinks
AllowOverride all
Order Deny,Allow
Allow from 127.0.0.1
</directory>
</VirtualHost>
この設定からアクセスしようとするとhttp://biz.example.com/、正しいウェブサイト(ビジネスウェブサイト)が読み込まれています。しかし、私がアクセスしようとするとhttp://pin.example.com/をクリックして、固定ウェブサイトの代わりにビジネスウェブサイトを読み込みます。複数の構成を一緒に使用することはできません。
また、biz.confとpin.confのダミー構成を単一のファイルbiz.confにマージしようとしましたが、うまくいきませんでした。
答え1
答え:
1) ServerName と ServerAlias の末尾のスラッシュを削除する必要があります。
2) ここで ServerAlias を削除でき、ServerName と ServerAlias の両方が同じです。
答え2
パスから二重引用符を削除する
DocumentRoot /var/www/html/pin
<directory /var/www/html/pin>
答え3
この設定からアクセスしようとするとhttp://biz.example.com/、正しいウェブサイト(ビジネスウェブサイト)が読み込まれています。しかし、私がアクセスしようとするとhttp://pin.example.com/をクリックして、固定ウェブサイトの代わりにビジネスウェブサイトを読み込みます。
ServerName
これは、ディレクティブとの不一致(構文エラー)が原因で発生します。ServerAlias
この場合、最初に定義されたディレクティブはすべてのVirtualHost
要求を受け取ります。
動作は、非常に似た構成を使用してドキュメントに説明されています。
単一のIPアドレスで複数の名前ベースのWebサイトを実行する(httpd.apache.org/docs/2.4/vhosts/examples.html)
# Ensure that Apache listens on port 80 Listen 80 <VirtualHost *:80> DocumentRoot "/www/example1" ServerName www.example.com # Other directives here </VirtualHost> <VirtualHost *:80> DocumentRoot "/www/example2" ServerName www.example.org # Other directives here </VirtualHost>
アスタリスクはすべてのアドレスと一致するため、プライマリサーバーは要求を処理しません。仮想ホストは
ServerName www.example.com
構成ファイルで最初のランクを持つため、優先順位が最も高く、次のように表示できます。基本または基本的な仕える人。つまり、指定されたディレクティブの1つと一致しない要求が受信されると、ServerName
要求は最初にそのディレクティブによって処理されます<VirtualHost>
。
解決策:
接頭辞と末尾のスラッシュがあってはなりません。
ServerName
つまり、http://
ServerName biz.example.com
そして
ServerName pin.example.com
ServerAlias
同じ値を持つので削除できます。ServerName
<Directory>
</Directory>
大文字で始める必要があります以前のApache 2.2アクセス制御構文は、新しいApache 2.4
Require
構文に変更する必要があります。Order Deny,Allow Allow from 127.0.0.1
と交換する必要があります
Require local
バラより