Jak stworzyć subdomenę na serwerze i do czego może to posłużyć?
Jest to bardzo pomocne jeżeli mamy zamiar prowadzić kilka serwisów internetowych w jednej domenie (np. twojadomena.pl, twojdrugiserwis.twojadomena.pl).
Nawet jeżeli usługodawca nie umożliwia nam tego, bądź nie mamy takiej opcji w panelu admina (panelu zarządzania domeną), jest na to prosty sposób. Plik .htaccess
Poniżej opiszę najszybszy i najbardziej komfortowy sposób na uzyskanie żądanego efektu.
Załużmy że nasza domena to: twojadomena.pl w jej głównym katalogu (tam gdzie są pliki strony) na serwerze tworzymy katalog np: twojserwis oraz tworzymy plik .htaccess (jeżeli już jest to edytujemy go) i umieszczamy w nim zapis:
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www.)?twojserwis.twojadomena.pl
RewriteCond %{REQUEST_URI} !twojserwis/
RewriteRule ^(.*)$ twojserwis/$1 [L]
UWAGA: Jeżeli plik .htacces już był i znajdowały się w nim poniższe linijki nie dodajemy ich po raz drugi, pomijamy je:
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
dodajemy tylko:
RewriteCond %{HTTP_HOST} ^(www.)?twojserwis.twojadomena.pl
RewriteCond %{REQUEST_URI} !twojserwis/
RewriteRule ^(.*)$ twojserwis/$1 [L]
Efektem będzie uzyskanie adresu: twojserwis.twojadomena.pl oraz www.twojserwis.twojadomena.pl
Jeżeli chcielibyśmy dodać wiele serwisów i nie chcemy żeby nam się one mieszały z plikami domeny głównej, proponuje dodać katalog o nazwie np. serwisy i dopiero w nim dodawać foldery z subdomenami.
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www.)?ts.td.pl
RewriteCond %{REQUEST_URI} !serwisy/ts/
RewriteRule ^(.*)$ serwisy/ts/$1 [L]
RewriteCond %{HTTP_HOST} ^(www.)?ts2.td.pl
RewriteCond %{REQUEST_URI} !serwisy/ts2/
RewriteRule ^(.*)$ serwisy/ts2/$1 [L]
RewriteCond %{HTTP_HOST} ^(www.)?ts3.td.pl
RewriteCond %{REQUEST_URI} !serwisy/ts3/
RewriteRule ^(.*)$ serwisy/ts3/$1 [L]
Efektem będzie dodanie trzech subdomen ts.td.pl ts2.td.pl ts3.td.pl oraz www.ts.td.pl www.ts2.td.pl www.ts3.td.pl
Sposób sprawdzałem na kilku serwerach i działa bez problemu (home.pl, livenet.pl, hekko.pl i inne)
chmod pliku .htaccess powinien być ustawiony na 644
Uwaga!!! W wielu przypadkach (np. w hekko.pl) do prawidłowego działania należy włączyć funkcję Wildcard na serwerze.
edit 06-01-2013:
Wyróżniamy trzy przydatne rodzaje przekierowań subdomeny na katalog.
Poniżej podam jakie efekty uzyskamy danymi przekierowaniami. Do przykładów użyjemy znaku # który będzie nam zastępował dowolny ciąg znaków.
1) RewriteCond %{HTTP_HOST} ^(www.)?twojserwis.twojadomena.pl
Po wpisaniu do przeglądarki adresu:
www.twojserwis.twojadomena.pl – kieruje na katalog subdomeny
twojserwis.twojadomena.pl – kieruje na katalog subdomeny
#twojserwis.twojadomena.pl – kieruje na katalog domeny
#.twojserwis.twojadomena.pl – kieruje na katalog domeny
2) RewriteCond %{HTTP_HOST} twojserwis.twojadomena.pl
Po wpisaniu do przeglądarki adresu:
www.twojserwis.twojadomena.pl – kieruje na katalog subdomeny
twojserwis.twojadomena.pl – kieruje na katalog subdomeny
#twojserwis.twojadomena.pl – kieruje na katalog subdomeny
twojserwis#.twojadomena.pl – kieruje na katalog domeny
#.twojserwis.twojadomena.pl – kieruje na katalog subdomeny
#.#.twojserwis.twojadomena.pl – kieruje na katalog subdomeny
(nieskończoność #.)#.#.#.twojserwis.twojadomena.pl – kieruje na katalog subdomeny
www.#.#.twojserwis.twojadomena.pl – kieruje na katalog subdomeny
3) A teraz przykład autorski nad którym siedziałem do rana, ponieważ żaden z dostępnych w internecie nie dawał mi tego co chciałem uzyskać.
RewriteCond %{HTTP_HOST} ^((.*)(\.))?twojserwis.twojadomena.pl
Po wpisaniu do przeglądarki adresu:
www.twojserwis.twojadomena.pl – kieruje na katalog subdomeny
twojserwis.twojadomena.pl – kieruje na katalog subdomeny
#twojserwis.twojadomena.pl – kieruje na katalog domeny
twojserwis#.twojadomena.pl – kieruje na katalog domeny
#.twojserwis.twojadomena.pl – kieruje na katalog subdomeny
#.#.twojserwis.twojadomena.pl – kieruje na katalog subdomeny
(nieskończoność #.)#.#.#.twojserwis.twojadomena.pl – kieruje na katalog subdomeny
www.#.#.twojserwis.twojadomena.pl – kieruje na katalog subdomeny
a masz może sposób na to żeby wszystkich przekierowaniach subdomen na katalogi wymusić https? chodzi o to że jak ktoś wipsze twojserwis.twojadomena.pl to przerzuca go na https://twojserwis.twojadomena.pl, jak wpisze twojserwis2.twojadomena.pl przerzuca go na https://twojserwis2.twojadomena.pl
Tak na szybkiego:
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://twojadomena.pl
wpisz w google: przekierowanie http na https, ewentualnie w weekend pomogę
Jakby ktoś jeszcze szukał to: http://netporadnik.wkom.pl/2013/03/htaccess-przekierowanie-301-czyli-przekierowanie-adresu-strony-internetowej-z-przedrostka-www-na-bez-www-lub-bez-www-na-www/#more-868 wystarczy zamiast http:// użyć https://
Wiesz może jak za pomocą .htaccess spowodować, że domena a.pl będzie ładować stronę http://server.pl/index.php?content=1
a domena b.pl http://server.pl/index.php?content=2 ?
Aha i nie chodzi tylko o te statyczne adresy ale poza samym content także inne ścieżki i parametry.
Na pewno parametry by musiały być przesyłane postem, nie get. Trochę przysypiam, ale najlepiej według mnie odczytać z jakiej domeny wszedł user i wyświetlić mu daną stronę.
No nie pomogłeś za bardzo, ale udało mi się to zrobić. Jakby ktoś potrzebował:
RewriteCond %{HTTP_HOST} ^(www\.)?a\.pl$ [NC]
RewriteRule ^(\/.*)?$ http://a.pl/index.php?content=1 [R=301,L]
RewriteCond %{HTTP_HOST} ^(www\.)?b\.pl$ [NC]
RewriteRule ^(\/.*)?$ http://b.pl/index.php?content=2 [R=301,L]
Oczywiście przy założeniu, że a.pl i b.pl to dwie domeny przypisane do tego samego kontentu (katalogu).
W ten piękny sposób udało mi się na home.pl postawić dwie strony (inny szablon i kategoria dla każdej z domen) na jednej joomli.
Nie podałem odpowiedzi, ale nadałem kierunek 🙂 Miło że wstawiłeś gotowca, na pewno komuś się przyda. Pozdrawiam
Przepraszam, że odgrzebuję starego kotleta, ale mam dość poważny dla mnie problem i nie mogę sobie poradzić.
Mianowicie przy próbie wejścia na subdomenę, wrzuca mi stronę główną. Miałem zmieniany plik htaccess.
Zawartość pliku httpacces wygląda tak:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^strona [NC]
RewriteRule ^(.*)$ strona%{REQUEST_URI} [R=301,L]
RewriteCond %{REQUEST_URI} ^\/index.php/dj-na-wesele-warszawa-dj-siedlce$
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*)$ strona [L,R=301]
Bardzo proszę o pomoc 🙂
Witam,
Przede wszystkim włącz wildcard na serwerze, jestem pewien że masz wyłączony.
Spróbuj metody z tego artykułu, sprawdzona i działa.
Napisz dokładniej co chcesz uzyskać.
Od jutra będę na urlopie więc nie wiem kiedy odpiszę.
Pozdrawiam
Witam, mam pytanie odnośnie automatycznego tworzenia subdomen. Przykładowo mam djgibo.pl/kontakt i chciał bym w dynamiczny sposób uzyskać przekierowanie na kontakt.djgibo.pl no i oczywiście zawartość tego pliku jako subdomena. Jest ktoś w stanie podpowiedzieć jak takie przekierowanie wykonać?
Ja bym to zrobił w php. Chyba najszybciej bo z htaccess będzie zabawa. Po drugie tego typu strona nie będzie dobrze pozycjonować się w wyszukiwarce.
Witam Domena http://www.xxxaaa.pl działa na niej joomla w pod folderze http://www.xxxaaa.pl/blog dałem nową instalację cms teraz gdy daje wejście na http://www.xxxaaa.pl/blog/wrzesień podaje mi 404 pokazując brak strony w instalacji skryptu tego pierwszego. co zrobić żeby tak sie nie działo?
Trzeba zmienić ścieżkę do katalogu w pliku */blog/.htaccess
z:
RewriteBase /
na
RewriteBase /blog/
aha i w tym samym .htacces z:
RewriteRule . /index.php [L]
na:
RewriteRule . /blog/index.php [L]
aha i zobacz czy path w live_site w pliku configuration.php jest ustawiony na podkatalog
Witam,
A ja mam ciekawy problem z nazwami subdomeny dla różnych wersji językowych.
Chciałbym zmienić tylko nazwę subdomeny za pomocą ht. Czyli mamy pełny adres sklep.nazwadomeny.pl dla wersji polskiej. Ale dla wersji ang. mamy już shop.nazwadomeny.pl co nie powinno mieć miejsca.
W związku z tym potrzebuję dokonać translacji shop.nazwadomeny.pl na sklep.nazwadomeny.pl. Za pomoc z góry dziękuję.
Dzięki wielkie, szukałem rozwiązania na założenie subdomen w sklepie internetowym.