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ć:
- cPanel 9.5.x – opis funkcji
- Apache module mod_rewrite [EN]
- Kurs mod_rewrite
- Mini tutorial używania mod_rewrite z życiowymi przykładami (;
To zyczę udanej zabawy z subdomenami lub mod_rewritem w upraszczaniu swoich linków na www ;)
Nitro:
20/09/2007 @ 16:53:12 | #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ę. :(