Na temat konfiguracji Virtual Hosts jest w sieci kilka przydatnych artykułów, które niestety nie są zaktualizowane do apache w wersji 2.4+. Postanowiłem więc przyjrzeć się temu i napisałem ten krótki poradnik.
O tym w jakim celu używa się Virtual Hostów myślę, że nie trzeba nikomu tłumaczyć z jednego wzgledu – skoro trafiłeś na ten artykuł to szukałeś rozwiązania, które jest Ci potrzebne tak? 🙂
Do napisania tego poradnika użyłem XAMPP 5.6.3 i będzie to działać wszędzie tam, gdzie Apache ma wersję 2.4 lub wyższą.
Cały proces odbywa się w 3 krokach
Krok 1
instalujemy xampp w wersji, najlepiej XAMPP 5.6.3 lub wyższej (jeśli taka już wyszła)
Krok 2
Odszukujemy plik hosts w folderze C:\Windows\System32\drivers\etc i dopisujemy na jego końcu regułę, tak jak niżej. Uwzględniamy przy tym wersję z WWW oraz bez WWW.
Nazewnictwo jest dowolne, ważne jest by nie stosować rozszerzeń domen, które istnieją, bo przeglądarka pokaże nam błąd 404 lub odniesie się do już istniejącej w sieci strony. Najczęściej stosuje się więc rozszerznia dev oraz loc. W miejscu, gdzie wpisałem test to już Wasza inwencja twórcza, nazewnictwo wirtualnego hosta jest tak dowolne jak nazewnictwo domeny przy jej zakupie.
127.0.0.1 localhost
127.0.0.1 www.test.dev
127.0.0.1 test.dev
Krok 3
Kolejno edytujemy plik httpd-vhosts.conf, który znajduje się w folderze C:\xampp\apache\conf\extra (dysk C może ulec zmianie, jeśli instalowaliście xamppa na innym, no ale to logiczne :))
Wpisujemy w nim regułę, która zawiera folder z naszym projektem/stroną www, nazwę którą podaliśmy w pliku hosts i co najważniejsze Required all Granted, czyli to czego brakuje w większości niezaktualizowanych w sieci poradnikach, bo tym właśnie zapisem różni się wersja apache 2.4+ od poprzednich.
W pliku o którym mowa (httpd-vhosts.conf) dopisujemy lub usuwamy zakomentowanie „#”
NameVirtualHost *:80
Kolejno, na końcu dopisujemy nasz Virtual Host
<VirtualHost *:80>
DocumentRoot „C:/test”
ServerName test.dev
ServerAlias www.test.dev
<Directory „c:/test”>
AllowOverride All
Require all Granted
</Directory>
</VirtualHost>
Powyższe dla Apache w wersji niższej niż 2.4+ powinno wyglądać troszkę inaczej:
<VirtualHost *:80>
DocumentRoot „C:/test”
ServerName test.dev
ServerAlias www.test.dev
<Directory „c:/test”>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Krok 4
Restartujemy naszego Xampp i powinno wszystko działać. W razie problemów można dorzucić do folderu plik indeksu (index.php lub index.html) i problem powinien zostać rozwiązany.
Podsumowanie
W przypadku, gdy wpisałem to co w pkt3 dla wersji Apache niższej niż 2.4, cały czas pojawiał się komunikat:
Zabroniony dostęp!
Nie masz dostępu do żądanego obiektu. Jest on zabezpieczony przed odczytem lub nie może być odczytany przez serwer.
Jeśli myślisz, że jest to błąd tego serwera, skontaktuj się z administratorem.
Error 403
www.test.dev
Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP/5.6.3