Jak utworzyć subdomenę, taką jak http://user.mywebsite.com ? Czy muszę jakoś uzyskać dostęp do htaccess? Czy rzeczywiście można go po prostu utworzyć za pomocą czystego kodu php, czy też muszę użyć zewnętrznego języka po stronie serwera skryptów?
Do tych, którzy odpowiedzieli: Czy w takim razie powinienem zapytać mojego hostingu, czy zapewniają jakiś dostęp do DNS?
wildcard subdomains
możesz to osiągnąć w.htaccess
. Zobacz moje rozwiązanie.Odpowiedzi:
Szukasz stworzyć niestandardowy rekord A .
Jestem prawie pewien, że podczas określania rekordów A możesz używać symboli wieloznacznych, które pozwolą ci zrobić coś takiego:
127.0.0.1 byłby adresem IP twojego serwera WWW. Metoda faktycznego dodania rekordu będzie zależeć od twojego hosta.
Zrobienie tego jak http://mywebsite.com/user byłoby o wiele łatwiejsze do skonfigurowania, gdyby była taka opcja.
Następnie możesz po prostu dodać plik .htaccess, który wygląda następująco:
W powyższym przypadku nazwy użytkowników są ograniczone do znaków az
Reguła przepisywania dotycząca przechwytywania subdomeny wyglądałaby następująco:
źródło
Funkcja, której szukasz, nazywa się Subdomeny wieloznaczne . Pozwala nie konfigurować DNS dla każdej subdomeny i zamiast tego używać przepisywania apache do przekierowania. Możesz znaleźć fajny samouczek tutaj , ale są tam tysiące tutoriali. Oto niezbędny kod z tego samouczka:
Jednak ponieważ wymagało to użycia VirtualHosts, musi być ustawione w pliku httpd.conf serwera, zamiast w lokalnym .htaccess.
źródło
Robię to trochę inaczej niż Mark. Mijam całą domenę i pobieram subdomenę w php.
To ignoruje obrazy i mapuje wszystko inne do mojego pliku index.php. Więc jeśli pójdę do
Wracam
Następnie w moim kodzie index.php po prostu eksploduję moją nazwę użytkownika z nazwy hosta. To daje mi ładne, ładne adresy URL SEO.
źródło
Ustawiamy DNS z symbolami wieloznacznymi, jak wyjaśniono powyżej. A więc rekord to * .yourname.com
Wtedy wszystkie subdomeny trafiają w to samo miejsce, ale PHP traktuje każdą subdomenę jako inne konto.
Używamy następującego kodu:
Ten kod po prostu ustawia
$account
zmienną taką samą, jak subdomena. Możesz wtedy odzyskać ich pliki i inne informacje na podstawie ich konta.Prawdopodobnie nie jest to tak wydajne, jak sposoby wymienione powyżej, ale jeśli nie masz dostępu do BIND i / lub ograniczonego .htaccess, ta metoda powinna działać (o ile Twój host skonfiguruje dla ciebie symbol wieloznaczny).
W rzeczywistości używamy tej metody do łączenia się z bazą danych klientów w przypadku aplikacji e-commerce obejmującej wiele firm, ale może ona również działać dla Ciebie.
źródło
Nie przejmuj się plikami .htaccess, gdy możesz korzystać z masowego wirtualnego hostingu Apache .
Z dokumentacji:
W pewnym sensie jest to odwrotność Twojego pytania: każda „subdomena” to użytkownik. Jeśli użytkownik nie istnieje, otrzymasz 404.
Jedyną wadą jest to, że zmienna środowiskowa
DOCUMENT_ROOT
nie jest poprawnie ustawiona na używany podkatalog, ale domyślny katalog_główny_dokumentu w de htconfig.źródło
Proste rozwiązanie PHP dla subdomen i aplikacji internetowych obsługujących wiele domen
Krok 1. Podaj rekord A DNS jako „*” dla domen (lub domen), które będziesz obsługiwać jako „example.org”
Krok 2. Sprawdź unikalność logowań podczas rejestracji użytkownika lub zmiany loginu. Unikaj też kropek w tych loginach.
Krok 3. Następnie sprawdź zapytanie
To rozwiązanie może obsługiwać różne domeny
Jeśli potrzebujesz tych samych nicków w różnych domenach obsługiwanych w różny sposób, może być konieczne zapisanie wyboru użytkownika dla domeny podczas rejestracji loginu.
źródło
Możesz [potencjalnie] przepisać adres URL, ale tak: musisz mieć kontrolę nad swoimi ustawieniami DNS, aby po dodaniu użytkownika otrzymał własną subdomenę.
źródło
Oprócz zmian konfiguracji na serwerze WWW w celu obsługi nowej subdomeny, Twój kod musiałby wprowadzać zmiany w rekordach DNS. Tak więc, chyba że używasz własnego BIND (lub podobnego), musisz dowiedzieć się, jak uzyskać dostęp do konfiguracji dostawcy serwera nazw. Jeśli nie oferują jakiegoś API, może to być trudne.
Aktualizacja: tak, zapytałbym twojego rejestratora, czy zapewnia on również usługę serwera nazw (jak to często bywa). Nigdy wcześniej nie korzystałem z tej opcji, ale podejrzewam, że większość rejestratorów konsumenckich tego nie robi. Wyszukałem w Google GoDaddy API i GoDaddy DNS API, ale nie byłem w stanie niczego włączyć, więc myślę, że najlepszą opcją byłoby sprawdzenie pomocy online u twojego dostawcy, a jeśli to nie odpowiada na pytanie, zaczekaj personelu pomocniczego.
źródło
Najpierw musisz upewnić się, że Twój serwer jest skonfigurowany tak, aby zezwalać na subdomeny z symbolami wieloznacznymi. Osiągnąłem to w JustHost, tworząc ręcznie poddomeny
*
. Określiłem również folder o nazwiesubdomains
jako katalog główny dla subdomen z symbolami wieloznacznymi. Dodaj to do.htaccess
pliku w folderze subdomen:Na koniec wszystko, co musisz zrobić, to utworzyć folder w folderze subdomen, a następnie umieścić pliki subdomeny w tym katalogu.
źródło
Można to osiągnąć pod
.htaccess
warunkiem, że serwer jest skonfigurowany tak, aby zezwalać na subdomeny z symbolami wieloznacznymi. Osiągnąłem to w JustHost, tworząc ręcznie nazwę*
poddomeny i określając folder o nazwie subdomeny jako katalog główny dokumentu dla subdomen z symbolami wieloznacznymi. Dodaj to do swojego.htaccess
pliku:Na koniec utwórz folder dla swojej subdomeny i umieść pliki subdomen.
źródło
Chciałem tylko dodać, że jeśli używasz CloudFlare (darmowego), możesz użyć ich API do łatwego zarządzania swoimi dns.
źródło
(1) Root .htaccess
Ten plik jest przekierowywany z http://www.yourwebsite.com do http://yourwebsite.com w celu użycia strony głównej. Wszystkie przekierowania subdomeny do twojego_folderu_witryny
(2) Folder wewnętrzny .htaccess
Ten plik przepisuje adresy URL subdomen.
http://yourwebsite.com/index.php?siteName=9lessons to http://9lessons.yourwebsite.com
Więcej wskazówek dotyczących .htaccess: Samouczek i wskazówki dotyczące pliku Htaccess.
index.php
Ten plik zawiera prosty kod PHP, wykorzystujący wyrażenia regularne weryfikujące wartość subdomeny.
Brak folderu poddomeny
Jeśli używasz katalogu głównego (htdocs / public_html) jako katalogu projektu, użyj następującego pliku .htaccess.
źródło