[解決済み] Apacheのバーチャルホストが期待通りに動作しない
質問
私のアパッチ "httpd-vhosts.conf" は次のようになります。
<VirtualHost *:80>
DocumentRoot "c:/wamp/www/"
ServerName localhost
ServerAlias *.localhost
</VirtualHost>
<VirtualHost laravel.dev:80>
DocumentRoot "c:/wamp/www/laravel/public"
ServerName laravel.dev
ServerAlias *.laravel.dev
</VirtualHost>
<VirtualHost learninglaravel.dev:80>
DocumentRoot "c:/wamp/www/learningLaravel/public"
ServerName learningLaravel.dev
ServerAlias *.learningLaravel.dev
</VirtualHost>
と私の "...system32/drivers/etc/hosts" も次のようになります。
127.0.0.1 localhost
127.0.0.1 localhost
// I added the following entries. The first two entries above was already there
127.0.0.1 laravel.dev
127.0.0.1 learninglaravel.dev
を入力すると "learningLaravel.dev"。 と "laravel.dev" をブラウザに入力すると、期待通り正常に動作します。しかし、私は他のフォルダを "www" フォルダにあるファイルにブラウザから直接アクセスできるようにしたいのです。 "localhost/test/me.php" . しかし、私がそのようなアドレスを入力するたびに、ブラウザは次のエントリの2番目に移動します。 vhosts-conf ファイルが見つからないという意味のlaravelのエラーが表示されます)。の最初のエントリが見つからないようです。 vhosts-conf ファイルが動作しておらず、Apache はそれをバイパスして 2 番目のエントリに移動します。最初のエントリは、キャッチオールエントリであることが前提です。2番目と3番目のエントリを入れ替えてどうなるか試してみましたが、 ブラウザは常に2番目のエントリに誘導され、キャッチオール(1番目のエントリ)の代わりに アドレスが処理されると思われる、次のようなエントリが表示されます。 "localhost/test/me.php"。
を入力すると、いつでも "localhost"。 の内容を表示するのではなく、2番目のエントリに直行します。 "www" フォルダーに格納されます。
この問題を解決するにはどうすればよいですか? ありがとうございます。
どのように解決するのですか?
の使い方に問題があるようです。
VirtualHost
ディレクティブを使用します。
バーチャルホストのIPアドレスに完全修飾ドメイン名を使用することは推奨されません。どのように動作するのか誤解を招く恐れがあるからです。名前ベースのバーチャルホストは
ServerName
ディレクティブのFQDNではなく
VirtualHost
ディレクティブ(
<VirtualHost FQDN:80>
). 実際には、これは次のように見なされます。
<VirtualHost 127.0.0.1:80>
何が起こるかというと、あなたのケースが文書化されるのは 仮想通貨ドキュメント の最後の2段落("Security"の直前)を引用しています。
<ブロッククオートリクエストを受信すると、サーバーはまず、そのリクエストを最適な ローカルIPアドレスとポートに基づくマッチング の組み合わせのみです。 ワイルドカードでない方が優先されます。 . 一致しない場合 IPとポートに基づくサーバー構成が全く発生しない場合、"main"サーバー構成が使用されます。 を使用します。
複数のバーチャルホストにベストマッチするIPアドレスと ポートに最も近いバーチャルホストを選択します。 を要求されたホスト名で指定します。 名前ベースのバーチャルホストにマッチするものがない場合 が見つかった場合、IPアドレスと一致する最初にリストアップされたバーチャルホス が使用されます。 . その結果、最初にリストアップされたバーチャルホストが 与えられたIPアドレスとポートの組み合わせが、そのデフォルトバーチャルホストとなります。 そのIPとポートの組み合わせ
ということで、依頼するときは
localhost/somedir
そのため、IP:Port を持つ最初の VHost をデフォルトとして選択し、*:Port を持つ最初の VHost は選択しないことになります。
この問題を解決するために
<VirtualHost *:80>
を 3 つの vhost 宣言のすべてで使用します。
<VirtualHost *:80>
DocumentRoot "c:/wamp/www/"
ServerName localhost
ServerAlias *.localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "c:/wamp/www/laravel/public"
ServerName laravel.dev
ServerAlias *.laravel.dev
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "c:/wamp/www/learningLaravel/public"
ServerName learningLaravel.dev
ServerAlias *.learningLaravel.dev
</VirtualHost>
そして、Apacheを再ロード/再起動します。
(これについての唯一の疑問は、なぜNasreddineがあなたのセットアップで動作するテストケースを作ることができたのかということです)。
関連
-
[解決済み] 整形されていない数値が発生しました。
-
[解決済み】変な電話番号を生成するフェイカー?
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: バインドされた変数の数が102行目のトークンの数と一致しない [終了]
-
[解決済み】 $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて]
-
[解決済み】Chrome net::ERR_INCOMPLETE_CHUNKED_ENCODING エラーが発生しました。
-
[解決済み] * vchiqインスタンスを開くのに失敗しました。
-
[解決済み] [Solved] Fatal error: 非オブジェクトのメンバ関数fetch_assoc()の呼び出し [重複]。
-
[解決済み] [Solved] Fatal error: メンバ関数 query() の null への呼び出し。
-
[解決済み】PHPのクラスが見つからないが、インクルードされている
-
MacでPHPを実行した際に、メモリサイズが134217728バイトも消費される問題の解決方法について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] Fatal error: メンバ関数prepare()のNULLでの呼び出し
-
[解決済み】move_uploaded_fileは、「failed to open stream: Permission denied" というエラーが出る
-
[解決済み] PHP & MySQL: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given [重複] PHP & MySQL: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given.
-
[解決済み】「初期通信パケットの読み込み」でMySQLサーバーに接続できなくなり、システムエラーになる。0
-
[解決済み】Xampp ローカルホスト/ダッシュボード
-
[解決済み】ディレクトリ内のファイル数を数える PHP
-
[解決済み】 libapache2-mod-php7 パッケージが見つからない。
-
[解決済み】子テーマのCSSが親テーマをオーバーライドしない
-
[解決済み】未定義の関数mysql_query()をLoginで呼び出す【重複
-
[解決済み】PHPの予期しないT_VARIABLEとは何ですか?