次のようなvhostsconfを備えたサーバーがあります。
NameVirtualHost *:80
# My Virtual Hosts:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName domain
DirectoryIndex index.php index.html
DocumentRoot /var/www/domain/public
# Custom log file locations
LogLevel warn
ErrorLog /var/www/domain/log/error_log
CustomLog /var/www/domain/log/access_log combined
<Directory "/var/www/dailysongfix/public">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
典型的なvhostconfでしょ?また、サーバー上に他のいくつかのサイトを開発する必要がありますが、これらのサイトにはまだドメインがフックされていません。ドメインがそれらを指していない状態でそれらを表示するにはどうすればよいですか?おそらくIPアドレスとポートを推測していますが、それを設定する方法がわかりません。
名前付き仮想ホストを使用する場合は、サーバーにsome nameを割り当てる必要があります。あなたの例では、ホストはdomain
という名前でアドレス指定されます(ServerName domain
ディレクティブから)。 http://123.45.67.89/
のようなことを行うことで、IPアドレスでサーバーに直接接続を試みることができますが、それによってApacheが指定された仮想ホストをトリガーすることはありません。これを行うには、クライアントの/etc/hosts
ファイルに次のようなものを追加する必要があります。
123.45.67.89ドメイン
これで、ブラウザでhttp://domain/
を使用できるようになります。これにより、DNSをいじることなく、名前とIPアドレス間のマッピングがローカルに設定されます。
これが機能する方法は、ブラウザがHTTPリクエストをサーバーに送信するときです。これには、URLの//
の後に使用されたテキストがHost:
ヘッダーに含まれます。 Apacheは、このテキストをHost:
ヘッダーで受け取り、名前付きの各仮想ホストのServerName
値と照合します。一致するものが見つかると、それをサーバーとして使用して残りのリクエストを処理します。 Apacheはnotホスト名とIPアドレスの間のマッピングを検索する必要があります。これが、クライアントマシンの構成を変更するだけの場合に機能する理由です。
VirtualHostの代わりに「Alias」を使用してください。PHPアプリケーションが固定URLを必要としない場合は、正常に機能するはずです。
編集:上記で貼り付けた構成にエイリアスを追加できます。コンテナの前にエイリアスを追加するだけです。
標準パッケージのApacheは、IPアドレスを介して使用できるようにセットアップされます。基本的に仮想ホストを持っていません
最善の方法ではないかもしれませんが、常に次のように行うことができます。
私は知っています-それはあなたが求めていたものではありませんが、あなたの問題を解決できると思います。
または、仮想ホストの構成がまったく同じである場合は、Webページを/ somewhere/{nameOfDomain}に配置してから、/ somewhereを別の仮想ホストとして共有します。次に、 http:// myVhost / {nameOfDomain}にアクセスすると、任意のページにアクセスできます。これは、vhostsにいくつかのアクセスルールがある場合[おそらく '別のvhost'構成に含まれない]、セキュリティリスクを引き起こす可能性があります。