cPanel, subdomeny i domeny

cPanel jest z jednym z lepszych najczęściej spotykanych paneli administracyjnych do zarządzania swoim serwerem wirtualnym, hostingiem.

Za jego pomocą można łatwo zarządzać podpiętymi domenami do naszego konta jak również tworzyć różne subdomeny. Wszystko fajnie i super, tylko cPanel ma jedna wadę odnośnie tworzenia subdomen.

Sprawa wygląda następująco:
Mamy sobie konto hostingowe na serwerze moje-konto.pl.
Mamy podpięte dwie domeny do naszego konta: dom.com i dom.net, które analogicznie wskazują na katalog dom-com i dom-net na naszym serwerze. Dodatkowo cPanel utworzył w czasie podpinania  subdomene dla każdej podpiętej domeny, w tym wypadku będzie to dom-com.nasze-konto.pl i dom-net.nasze-konto.pl.

Teraz tworząc dla każdej demony subdomene o takiej samej nazwie cPanel dla każdej z nich przypisze ten sam katalog!
sub.dom1.com i sub.dom2.com będą wskazywać na katalog sub znajdujący się w katalogu głównym naszego konta. Nie ma możliwości zmiany tego katalogu.

Problem się pojawia, kiedy chcemy, aby każda z tych subdomen wskazywała na inny katalog.

Są dwa rozwiązania tego problemu.
Zapominamy o opcji Subdomeny, gdy chcemy utworzyć subdomene dla podpietych domen, a wykorzystujemy ja tylko dla domeny moje-konto.pl i innej zaparkowanej domeny…
Subdomeny dla naszych domen tworzymy za pomocą opcji Domeny podpiete. Nasze subdomeny podpinamy do konta jakby były zwykłymi domenami. Mamy wtedy możliwość określenia katalogu (subdomeny nasze-konto.pl) gdzie domena będzie wskazywać :)
Standardowo dla naszej sub.dom.com będzie to katalog sub-dom-com w głowbyn katalogu naszego konta.
Sposób prosty, łatwy, rozwiązujący nasz problem i spełniający nasze potrzeby.

Gdybyśmy jednak chcieli, aby katalog naszej subdomeny znajdował się w katalogu domeny (dom-com/sub) musimy skorzystać z rozwiązania drugiego.

Rozwiązanie drugie jest podobne do pierwszego, tylko w czasie wybierania katalogu wpisujemy katalog naszej domeny nadrzędnej, czyli dom-com. W takim wypadku nasza domena będzie wskazywała tą sama zawartość, co domena, a tego nie chcieliśmy.
Musimy teraz skorzystać z mod_rewrite.
W katalogu domeny (dom-com) w pliku .htaccess wpisujemy:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} !^(www\.)?malcom\.xorg\.pl
RewriteCond %{HTTP_HOST} ^(www\.)?([^.]+)\.malcom\.xorg\.pl [NC]
RewriteRule (.*) /%2/$1 [L]

Teraz nasza domena wskazuje na katalog o takiej samej nazwie znajdujący się w katalogu domeny (dom-com/sub).

Sposób dziala, nie mniej pewnie wymaga troche bardziej skomplikowanych reguł mod_rewrite’a, bo ja się nim bawiłem tylko kilka godzin (prędzej nigdy nie uzywałem) i w pewnych okolicznościach mogą dobrze nie funkcjonować lub nie dawać takiej funkcjonalności jak powinny.
W czasie testów ukazał się mały problem, gdy korzystaliśmy w jakimś katalogu z listowania jego zawartości (mod_dir). Wtedy, gdy byliśmy w jakimś podrzędnym katalogu, link Patent directory wskazywał na nasza subdomene + katalog subdoemny (sub.dom.net/sub/). Ale mimo to wszystko działało prawidłowo tylko ten nieszczęsny człon w adresie się pojawił :P

Podsumowując, warto wymienić kilka uwag odnośnie obu rozwiązań.
Mianowicie drugie rozwiązanie wymaga mod_rewrite, który nie zawsze jest dostępny na naszym serwerze hostingowym. Ale gdy już jest daje nam dużo możliwości i pełna kontrole nad naszą domena i subdomenami. Możemy na przykład przypisać jedna faviconkę do wszystkich subdomen lub inne cuda robić. Musimy tylko dobrze pomyśleć i poznać reguły mod_rewrite’a ;)

Pierwsze rozwiązanie w porównaniu do drugiego ma tę przewagę, że dla każdej subdomeny mamy dostęp z FTPa, gdzie użytkownik będzie mógł się poruszać tylko w obrębie katalogów danej subdomeny. Nie będzie mógł przejść do katalogu nadrzędnego (głównego) naszego konta. Przydatne, gdy chcemy daną subdomenę udostępnić komuś :)

W drugim rozwiązaniu dostęp do katalogu subdomen jest tylko możliwy przez katalog domeny, chyba, że spróbujemy w cPanelu utworzyć konto FTP dla katalogu subdomeny. Powinno zadziałać, ale niestety nie testowałem, więc nie jestem pewny :P

Kilka linków, które sie moga przydać:

To zyczę udanej zabawy z subdomenami lub mod_rewritem w upraszczaniu swoich linków na www ;)

Jedno przemyślenie nt. „cPanel, subdomeny i domeny”

  1. Malcom pomóż mam wpis w .htaccess:


    RewriteEngine On
    Options +FollowSymlinks
    RewriteBase /
    RewriteCond %{HTTP_HOST} !^(www\.)?domena\.pl
    RewriteCond %{HTTP_HOST} ^(www\.)?([^.]+)\.domena\.pl
    RewriteRule (.*) %2/$1 [L]

    i nie chce mi działać :( Proszę, popraw go tak, żeby zadziałał.

    plik .htaccess jest umieszczony w głównym katalogu htdocs. Po wpisaniu np. blog.domena.pl .htaccess pobiera info z katalogu blog, itd. Oczywiście katalogi do których będą się odwoływać subdomeny są w tym samym katalogu (htdocs) co .htaccess

    Za pomoc dziękuję :)

    PS. Próbowałem też z bloga xradara http://blog.xradar.net/2006/02/25/subdomeny-htaccess-apache/

    dobry jest, ale chce żeby wpisy w .htaccess był uniwersalny czyli żeby nie klepać kolejnych 3 linijek aby dodać nową subdomenę. :(

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *