web-dev-qa-db-ja.com

Apache VirtualHostおよびlocalhost

Mac OS XでXAMPPを使用しています。クライアント用にsymfonyのWebサイトを適切に実行しようとしています。symfonyを(まだ)知りません。インストールして起動したいだけです。

Etc/hostsを次のように変更しました。

127.0.0.1 www.mysite.local       

そして、httpd.confは次のようになります。

<VirtualHost *:80>
  ServerName www.mysite.local
  DocumentRoot /Applications/MAMP/htdocs/mysite/web
  DirectoryIndex index.php
  <Directory /Applications/MAMP/htdocs/mysite/web>
    AllowOverride All
    Allow from All
  </Directory>
  Alias /sf /Applications/MAMP/htdocs/mysite/lib/vendor/symfony/data/web/sf
  <Directory "/Applications/MAMP/htdocs/mysite/lib/vendor/symfony/data/web/sf">
    AllowOverride All
    Allow from All
  </Directory>
</VirtualHost>

現在、サイトは機能しています(はい!)が、localhostwww.mysite.localとしてレンダリングされるため、他のローカルサイトにはアクセスできなくなりました。私はどこが間違っていますか?

ありがとうございました!

60
Angelica Rosa

表示されている場合、これは正常です。最初の仮想ホストエントリであるため、ローカルホストが表示されます。

たとえば、そのページを表示したくないとしましょう。表示したいのはApacheの動作ページだけなので、mysite.localの前にローカルホストとしてvhostエントリを作成し、それが動作するページを指すようにします。

しかし、これは正常です。前にこの問題があったので、心配しないでください!

24

これは私のために働いた!

http://localhost/projectNameなどのプロジェクトを実行するには

<VirtualHost localhost:80>
   ServerAdmin localhost
    DocumentRoot path/to/htdocs/
    ServerName localhost
</VirtualHost>

http://somewebsite.comなどのプロジェクトをローカルで実行するには

<VirtualHost somewebsite.com:80>
     ServerAdmin [email protected]
     DocumentRoot /path/to/htdocs/somewebsiteFolder
     ServerName www.somewebsite.com
     ServerAlias somewebsite.com
</VirtualHost>

他のウェブサイトでも同じ

<VirtualHost anothersite.local:80>
     ServerAdmin [email protected]
     DocumentRoot /path/to/htdocs/anotherSiteFolder
     ServerName www.anothersite.local
     ServerAlias anothersite.com
</VirtualHost>
90
Ganatra

localhostは常に127.0.0.1にリダイレクトします。他のVirtualHostに127.0.0.2などの他のローカルループバックアドレスを指定することで、これをだますことができます。これを実装するには、対応するhostsファイルも必ず変更してください。

たとえば、私のhttpd-vhosts.confは次のようになります。

<VirtualHost 127.0.0.2:80>
    DocumentRoot "D:/6. App Data/XAMPP Shared/htdocs/intranet"
    ServerName intranet.dev
    ServerAlias www.intranet.dev
    ErrorLog "logs/intranet.dev-error.log"
    CustomLog "logs/intranet.dec-access.log" combined

    <Directory "D:/6. App Data/XAMPP Shared/htdocs/intranet">
        Options Indexes FollowSymLinks ExecCGI Includes
        Order allow,deny
        Allow from all
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost>セクションに127.0.0.2:80と入力したことに注意してください。VirtualHostのこのブロックは、IPアドレス127.0.0.2 port 80へのリクエストにのみ影響することを意味します。 HTTP。

名前intranet.devを適切にルーティングするために、私のhostsエントリ行は次のようになります。

127.0.0.2 intranet.dev

これにより、localhostに別のVirtualHostブロックを作成できなくなりますが、これは不要です。

27
Saiful

あなたはこれを使いたいかもしれません:

<VirtualHost *:80>
    DocumentRoot "somepath\Apache2.2\htdocs"
    ServerName localhost 
</VirtualHost>
<VirtualHost *:80>

最初の仮想ホストとして(別の仮想ホストの前に配置します)

11
John Smith

VirtualHostで作業中にlocalhostにアクセスするという同じ問題がありました。以下のようにvirtualHostリッスンコードに名前を追加して解決しました

hostsファイルに以下のコードを追加しました(C:\ Windows\System32\drivers\etc\hosts)-

127.0.0.1       main_live

そして、私のhttpd.confに以下のコードを追加しました-

<VirtualHost main_live:80>
    DocumentRoot H:/wamp/www/raj/main_live/
    ServerName main_live
</VirtualHost>

それでおしまい。 localhostphpmyadmin、およびmain_live(My virtual project)の両方を同時に使用できます。

8
Raj

ジョン・スミスの回答の追加説明 公式ドキュメントから 。その理由を理解するため。

メインホストがなくなります

仮想ホストを追加する場合既存のWebサーバーに、既存のホストのブロックを作成するも必要です。この仮想ホストに含まれるServerNameおよびDocumentRootは、グローバルなServerNameおよびDocumentRootと同じである必要があります。デフォルトのホストとして機能するように、この仮想ホストを最初に構成ファイルにリストします。

たとえば、XAMPPで適切に動作するには、VirtualHostがメインホストをオーバーライドしないように、次の行をhttpd-vhosts.confに追加します

# Main Host
<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "/xampp/htdocs"
</VirtualHost>

# Additional Host
<VirtualHost *:80>
    # over directives there
</VirtualHost>
5
SiZE

ここで説明されているすべてを実行しても、まだアクセスできない場合:
Apache 2.4のXampp:

httpd-vhost.confで

<VirtualHost *>
    DocumentRoot "D:/xampp/htdocs/dir"
    ServerName something.dev
   <Directory "D:/xampp/htdocs/dir">
    Require all granted #Apache v 2.4.4 uses just this
   </Directory>
</VirtualHost>


ポート(ここではip)は必要ありません。Apacheは独自のファイルでポートを構成します。非推奨のNameVirtualHost *:80は必要ありません。使用できますが、違いはありません。

次に、ホストを編集するには、 nOTEPAD AS ADMINISTRATOR(DESCRIBED BELLOW)を実行する必要があります。これを行わずにファイルを編集する場合は、元のファイルではなく擬似ファイルを編集します(はい、保存しますが、実際のファイルではありません)
Windowsの場合:

メモ帳アイコンを見つけ、右クリックして、管理者として実行し、ファイルを開き、c:/ windows/system32/driver/etc/hostsに移動し、「すべてのファイルを表示」をチェックして、ホストを開きます。

以前に編集していた場合は、管理者として実行していないときに以前に編集していたファイルではない可能性があります。

それから apacheがhttpd-vhost.confを読んでいるかどうかを確認します 、xampFolder/Apache/binに移動し、Shiftキーを押しながら右クリックして、ここでターミナルコマンドを開き、xamppを開き(通常どおり)、Apacheを起動し、コマンドラインで次のように入力します。 httpd -S、仮想ホストのリストが表示されます。something.devがあるかどうかを確認してください。

5
sagits

<VirtualHost *:80><VirtualHost 127.0.0.1:80>に変更するだけです。

デフォルトのDocumentRootは、サーバーを指すすべてのドメインまたはIPに対応し、指定されたVirtualHostが機能します。

3
SaEEd

このドキュメントによると: 名前ベースの仮想ホストサポート

次のディレクティブが欠落している可能性があります。

NameVirtualHost *:80
2
Bjarni Rúnar

webフォルダー(前述の「/ Applications/MAMP/htdocs/mysite/web ")が空であるためです。

私の提案は、まずプロジェクトを作成し、次に仮想ホストの作成に取り組むことです。私は同じような状況で行きました。 DocumentRoot in httpd-vhosts.confizで空のフォルダーを使用していましたが、自分のshahg101.comサイトにアクセスできません

0
Shahmir

私はUbuntu 16.04を実行しています、これは私のために働いたものです:

  1. ターミナルを開き、/etc/Apache2/sites-availableに移動します。そこに000-default.confというファイルがあります。
  2. そのファイルをコピーします:cp 000-default.conf example.local.conf
  3. その新しいファイルを開きます(私はNanoを使用しています。使い慣れたものを使用してください)。
  4. 多くのコメント行が表示されますが、削除できます。
  5. <VirtualHost *:80><VirtualHost example.local:80>に変更します
  6. ファイルの場所を反映するようにドキュメントルートを変更します。
  7. 次の行を追加します。ServerName example.localそして、必要な場合は、この行を追加します:ServerAlias www.example.local
  8. ファイルを保存し、Apacheを再起動します:service Apache2 restart

ブラウザを開き、example.localに移動します。 Webサイトが表示されます。

0
Kenneth Odle