netcoffee.pl*po godzinach - reaktywacja

Ten blog jest kontynuacją bloga dostępnego ongiś pod adresem netcoffee.pl/pogodzinach.
Artykuły, które na to zasługują są przenoszone do nowej wersji bloga. Pozostałe wkrótce znikną.

2007-09-16

Domena z www - nie twórzmy niepotrzebnych ograniczeń

Problem

Po wpisaniu w Google zapytania jak wybrać domenę, otrzymamy w przybliżeniu 1,320,000 wyników. Jak widać, jest dość popularne zagadnienie. Każdy, kto zakłada własną stronę, może dowiedzień się jak wybrać piękną, unikalną domenę, sugerującą korzyści, jakość produktu, łatwo wymawianą, łatwą do zapamiętania... bla bla bla. Część z tych artykułów ociera się już o bełkot, choć można przeczytać także coś wartościowego.


Dziwi mnie jednak, dlaczego tak wielu administratorów stron (adminów, webmasterów i im podobnych) nie zauważa problemu subdomeny www? Bardzo często spotykam się z sytuacją, gdy jedynym działającym adresem strony jest www.example.org, natomiast example.org nie wskazuje na żaden serwer, albo - co gorsze - wskazuje na stronę firmy hostingowej.


Dziwi mnie niesamowicie to, że wiele firm walczy o jak najkrótsze nazwy, nieraz odkupując domeny za duże pieniądze. Po czym cały efekt jest psuty przez nieudolnego admina/webmastera etc, bo do ślicznej, trzyliterowej domeny trzeba dopisać kolejne 4 znaki - www. Złego wizerunku strony dopełnia fakt, że w gros przypadków nie ma żadnego uzasadnienia w wymuszaniu na użytkownikach dopisywania www.


Osobiście wpisując adresy stron, niemal zawsze pomijam www. Często niestety kończy się to koniecznością ponownego wpisania adresu - tym razem z www. Irytuje mnie to bardziej niż "strona przygotowana dla IE 5¼". Szczególnie, że rozwiązanie problemu jest niesamowicie banalne, a zaniechanie - w mojej opinii - wynika jedynie z ignorancji adminów.


Rozwiązanie I (dobre, z wadami) - dajemy wybór internautom

Dosyć dobrym rozwiązaniem jest takie skonfigurowanie sewera www, aby dla obu adresów (example.org i www.example.org) zwracał tę samą stronę. W Apache można np. skonfigurować dwa wirtualne hosty wskazujące na to samo położenie dokumentów - DocumentRoot.


Dzięki takiemu rozwiązaniu, obojętnie czy odwiedzający wpisze www.example.org czy example.org - zawsze zobaczy stronę której szuka.


Wady rozwiązania I

Internauta jest zdezorientowany

Mniej doświadczeni internauci (np. ci, którzy na e mówią "Internet") mogą czuć sie zdezorientowani, a nawet zagrożeni tym, że jakaś strona ma adres bez www na początku.

Możliwe rozwiązania: wykorzystać Rozwiązanie II lub zignorować problem ;)


Przeglądarka jest zdezorientowana

Należy pamiętać o tym, że przeglądarka odsyła ciasteczka tylko do tych domen, do których powinna je odesłać. Jeżeli więc w PHP ustawiamy ciasteczko w ten sposób:


setcookie('kruche', 'z_cukrem');

to nie dziwmy się, że użytkownik który np. zalogował się na example.org/login/, nie będzie zalogowany na www.example.org/.

Możliwe rozwiązania: ustawiajmy ciasteczka korzystając z opcjonalnych parametrów setcookie:


bool setcookie ( string $name [, string $value [, int $expire [, string $path [, string $domain [, bool $secure [, bool $httponly]]]]]])

Czyli możemy napisać tak:


setcookie('kruche', 'z_cukrem', time() + 60 * 60 * 24 * 31, '/', '.example.org');

ciasteczko będzie widoczne dla wszystkich subdomen naszego serwisu.

Takie podejście do ciasteczek jest bardzo ważne. Znam serwis, który działa pod dwoma adresami: example.org i www.example.org. Można w tym serwisie dokonać płatności za zamówienie za pośrednictwem jednego z systemów płatności online. Jednak powrót z systemu transakcyjnego następuje zawsze na adres www.example.org. Wiadomo jaki jest efekt: gdy loguję się na example.org - zamiast potwierdzenia płatności, otrzymuję ekran logowania...


Innym problemem jest zapamiętywanie haseł i wartości wpisanych w formularzach przez przeglądarki. Wartości te są także przypisywane do domen. Jeżeli zapamiętam hasło na example.org/login/, to nie będzie ono proponowane przez przeglądarkę na www.example.org/login/

Możliwe rozwiązania: Rozwiązanie II


serwer jest zdezorientowany

Przy korzystaniu z dwóch wirtualnych hostów, w zależności od konfiguracji serwera, możemy mieć problem np. ze statystykami (odzielne statystyki dla www.example.org i example.org) lub ze skonfigurowaniem SSL. Niektóre roboty i wyszukiwarki mogą traktować adresy www.example.org i example.org jako niezależne strony (choć zdaje się, że Google już sobie z tym poradziło).


Możliwe rozwiązanie: Rozwiązanie II


Rozwiązanie II (dobre) - odbieramy wybór internautom

W tym rozwiązaniu należy dać wybór internautom, przez skonfigurowanie serwera tak, aby działały oba adresy (www.example.org i example.org) - tak jak w Rozwiązaniu I - a następnie odebrać wybór przez ustawienie przekierowania na jednym z adresów. Takie rozwiązanie możemy zrealizować na dwa sposoby:


Apache i mod_rewrite

Używamy mod_rewrite w Apache aby przekierować użytkownika z example.org na www.example.org. Można to zrobić np. tak:


<VirtualHost 127.0.0.1>
ServerName example.org
DocumentRoot /var/www/i/co/tam/jeszcze_chcecie
RewriteEngine On
RewriteRule ^/(.*)?$ http://www.example.org/$1?%{QUERY_STRING} [R=301,L]
</VirtualHost>


Moje ulubione rozwiązanie. Jest o tyle dobre, że przekieruje użytkownika bez utraty ścieżki i parametrów przekazanych metodą GET. Wady: dane przekazane metodą POST zostaną utracone.


PHP i header()

Jeżeli nie macie możliwości modyfikowania konfiguracji Apache, podobne rozwiązanie można uzyskać korzystając z PHP i funkcji header():


if($_SERVER['HTTP_HOST'] == 'example.org'){
header("Location: http://www.example.org{$_SERVER['REQUEST_URI']}");
die();
}



i po problemie!

Jak widać, można bez problemu skonfigurować serwer tak, aby działały obie domeny - www.example.org lub example.org. Cała trudność polega jedynie na zauważeniu problemu. W zależności od potrzeb możemy skorzystać z któregoś z rozwiązań. W obu jednak trzeba pamiętać o tym, że serwery DNS muszą zwracać IP serwera dla obu domen.


Apel dnia ;)

Nie narzucajmy sztucznych i niepotrzebnych ograniczeń!

Takim niepotrzebnym ograniczeniem jest właśnie wymaganie wpisywania www lub to o którym pisał kiedyś Robert Drózd: Za krótkie - źle, za długie - też źle.