Apache VirtualHost 및 localhost
저는 Mac OS X에서 XAMPP로 작업하고 있습니다. 클라이언트를위한 심포니 웹 사이트를 제대로 실행하려고합니다. 저는 심포니를 잘 모릅니다. 설치하고 실행하고 싶습니다.
이 방법으로 등 / 호스트를 변경했습니다.
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>
이제 사이트가 작동하고 있지만 (예!) localhost 가 www.mysite.local 로 렌더링 되기 때문에 다른 로컬 사이트에 더 이상 액세스 할 수 없습니다 . 내가 틀렸어?
감사합니다!
보시면 정상입니다. 첫 번째 가상 호스트 항목이므로 로컬 호스트를 표시합니다.
예를 들어 해당 페이지를 표시하고 싶지 않다고 가정 해 보겠습니다. 보여주고 싶은 것은 아파치 작동 페이지이므로 mysite.local 앞에 가상 호스트 항목을 로컬 호스트로 만들고 작동 페이지를 가리킬 것입니다.
그러나 이것은 정상입니다. 나는 전에이 문제가 있었으므로 걱정하지 마십시오!
이것은 나를 위해 일했습니다!
다음과 같은 프로젝트를 실행하려면 http://localhost/projectName
<VirtualHost localhost:80>
ServerAdmin localhost
DocumentRoot path/to/htdocs/
ServerName localhost
</VirtualHost>
http://somewebsite.com
로컬 과 같은 프로젝트를 실행하려면
<VirtualHost somewebsite.com:80>
ServerAdmin webmaster@example.com
DocumentRoot /path/to/htdocs/somewebsiteFolder
ServerName www.somewebsite.com
ServerAlias somewebsite.com
</VirtualHost>
다른 웹 사이트와 동일
<VirtualHost anothersite.local:80>
ServerAdmin webmaster@example.com
DocumentRoot /path/to/htdocs/anotherSiteFolder
ServerName www.anothersite.local
ServerAlias anothersite.com
</VirtualHost>
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의이 블록이 HTTP의 기본 포트 인 IP 주소 127.0.0.2
port에 대한 요청에만 영향을 미친다는 것을 의미합니다 80
.
이름을 intranet.dev
올바르게 라우팅하기 위해 hosts
입력 줄은 다음과 같습니다.
127.0.0.2 intranet.dev
이렇게하면에 대해 localhost
불필요한 VirtualHost 블록을 만들 수 없습니다.
이것을 사용할 수 있습니다.
<VirtualHost *:80>
DocumentRoot "somepath\Apache2.2\htdocs"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
첫 번째 가상 호스트로 (다른 가상 호스트 앞에 배치)
virtualHost로 작업하는 동안 localhost에 액세스하는 것과 동일한 문제가 발생했습니다. 아래와 같이 virtualHost 수신 코드에 이름을 추가하여 해결했습니다.
내 호스트 파일에서 아래 코드를 추가했습니다 ( 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>
그게 다야. 작동하며, localhost , phpmyadmin 및 main_live (내 가상 프로젝트)를 동시에 사용할 수 있습니다.
Additional description for John Smith answer from official documentation. To understand why it is.
Main host goes away
If you are adding virtual hosts to an existing web server, you must also create a block for the existing host. The ServerName and DocumentRoot included in this virtual host should be the same as the global ServerName and DocumentRoot. List this virtual host first in the configuration file so that it will act as the default host.
For example to work properly with XAMPP, to prevent VirtualHost override main host, add follow lines into httpd-vhosts.conf
# Main host
<VirtualHost *:80>
ServerName localhost
DocumentRoot "/xampp/htdocs"
</VirtualHost>
# Additional host
<VirtualHost *:80>
# over directives there
</VirtualHost>
For someone doing everything descripted here and still cant access:
Xampp with apache 2.4:
on 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>
No need for port, or ip here, apache configure it on its own files. No need for NameVirtualHost *:80, its deprecated, you can use it, but make no difference.
Then to edit hosts, you MUST RUN NOTEPAD AS ADMINISTRATOR (DESCRIBED BELLOW), if you where editing the file without doing this, you are editing a pseudo file, not the original (yes, it saves and shit, but its not the real file)
In windows:
Find notepad icon, right click, run as administrator, open file, go to c:/windows/system32/driver/etc/hosts, check "see all files", open hosts.
If you where editing it before, probably you will see its not the file you were previously editing when not running as administrator.
Then to check if Apache is reading your httpd-vhost.conf , go to xampFolder/apache/bin, shift + right click, open terminal command here, open xampp (as you usually do), start apache, then on the command line, type httpd -S , you will see a list of the virtual hosts, just check if your something.dev is there.
Just change <VirtualHost *:80>
to <VirtualHost 127.0.0.1:80>
.
Then default DocumentRoot
will serve for all domains or IPs that point to your server and specified VirtualHost
will work.
According to this documentation: Name-based Virtual Host Support
You may be missing the following directive:
NameVirtualHost *:80
it may be because your web folder (as mentioned "/Applications/MAMP/htdocs/mysite/web") is empty.
My suggestion is first to make your project and then work on making virtual host. I went with similar situation. I was using an empty folder in the DocumentRoot in httpd-vhosts.confiz and I cant access my shahg101.com site
I am running Ubuntu 16.04, this is what worked for me:
- Open up a terminal and cd to
/etc/apache2/sites-available
. There you will find a file called000-default.conf
. - Copy that file:
cp 000-default.conf example.local.conf
- Open that new file (I use Nano; use what you are comfortable with).
- You will see a lot of commented lines, which you can delete.
- Change
<VirtualHost *:80>
to<VirtualHost example.local:80>
- Change the document root to reflect the location of your files.
- Add the following line:
ServerName example.local
And if you need to, add this line:ServerAlias www.example.local
- Save the file and restart Apache:
service Apache2 restart
Open a browser and navigate to example.local
. You should see your website.
참고URL : https://stackoverflow.com/questions/10981174/apache-virtualhost-and-localhost
'IT Share you' 카테고리의 다른 글
Tmux 테두리가 줄 대신 xq로 표시됩니까? (0) | 2020.12.02 |
---|---|
Console.Clear를 사용하여 전체 콘솔 대신 한 줄만 지울 수 있습니까? (0) | 2020.12.02 |
유닉스 종류의 버전 번호 (0) | 2020.12.02 |
Javascript switch 문 : 두 사례가 동일한 코드를 실행하는 방법이 있습니까? (0) | 2020.12.02 |
SCSS 컴파일시 거짓 양성 "정의되지 않은 변수"오류 (0) | 2020.12.02 |