Wszędzie dobrze, ale na localhost najlepiejStrony internetowe zdecydowanie szybciej implementuje się pracując na localhost, zwłaszcza z gotowymi pakietami WAMP, np. XAMPP. Niestety pojawia się kilka problemów, przez które nie jest to aż tak wygodne jakby się chciało.
Pierwszym problemem są subdomeny -- jeżeli pracujemy na czyimś kodzie, gdzie odwołania do plików graficznych/css/podstron zaczynają się po prostu od / będzie nieciekawie. Jeżeli nasza aplikacja będzie na http://localhost/test/, to plik /logo.png jest rozpoznawany jako http://localhost/logo.png. Niby możemy przenieść całą aplikację do głównego katalogu serwera, ale nie jest to zbyt wygodne przy dłuższej pracy.
Drugim problemem jest współpraca z innymi aplikacjami znajdującymi się na domenie, na której będzie docelowo znajdować się aplikacja. Najłatwiej jest ją zrealizować przez ciasteczka (np. sprawdzenie czy użytkownik jest zalogowany). Niestety (a właściwie dobrze) przeglądarki ze względu na bezpieczeństwo, nie pozwalają każdemu odczytywać ciasteczek -- musi się zgadzać domena.
Jak można sobie z tym łatwo poradzić? Odpowiedź na to pytanie znajduje się w dalszej części.
Okazuje się, że sprawa jest dość prosta. Pierwsze co musimy zrobić, to przekierować odpowiednią domenę do naszego komputera. Musimy zacząć od dodania do pliku c:\Windows\System32\drivers\etc\hosts odpowiedniego wpisu, przykładowo:
127.0.0.1 freedoku.localhost 127.0.0.1 test.revo.pl
Gdy wpiszemy adres znajdujący się w hosts zostaniemy przekierowani automatycznie na localhost. Połowa drogi za nami ;)
Druga rzecz, którą musimy zrobić to modyfikacja pliku httpd.conf w apache. W xamp znajduje się w katalogu C:\xampp\apache\conf\. W tym pliku należy dodać konfigurację wirtualnych hostów (ja dodałem po linii z Listen 80):
<VirtualHost *:80> ServerName test.revo.pl DocumentRoot "C:/xampp/htdocs/test" DirectoryIndex index.php index.html index.html index.htm index.shtml </VirtualHost> <VirtualHost *:80> ServerName freedoku.localhost DocumentRoot "C:/xampp/htdocs/freedoku" DirectoryIndex index.php index.html index.html index.htm index.shtml </VirtualHost>
I to w sumie wszystko -- należy tylko pamiętać, żeby podawać hosty od najbardziej szczegółowych do ogólnych, bo zostanie dobrane pierwsze dopasowanie. Musiałem też dodać wpis do samego localhosta, bo przestał działać:
<VirtualHost *:80> ServerName localhost DocumentRoot "C:/xampp/htdocs" DirectoryIndex index.php index.html index.html index.htm index.shtml </VirtualHost>