Ich möchte Leute in der Lage sein, ihre eigenen Sektionen innerhalb meiner Site zu registrieren, und diese Sektionen sind ihre eigene Subdomain meiner Site. also kann jemand "test" registrieren und "test.example.com" auf seine Seite verweisen, was dann "/site.php?id=1" wäre. Wie würde ich also eine mod_rewrite-Regel dafür schreiben?Verwenden von mod_rewrite für Subdomains
Antwort
mod_rewrite
ist möglicherweise nicht das beste Werkzeug dafür. RewriteRules eignen sich hervorragend zum Zuordnen einer Datei zu etwas anderem, aber nicht zum Domänenabgleich.
Das Beste, was Sie tun können, mod_rewrite
verwendet, ist die folgende:
RewriteEngine On
# Skip www.domain.com
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com
RewriteRule ^/(.*)$ site.php?domain=%1&file=$1 [L]
, die nicht wirklich nützlich ist. Was würde ich empfehlen, statt zu tun, wenn programmatisch den Wert von HTTP_HOST
als solche überprüfen:
function get_subdomain() {
if(preg_match('/^([^.]+)\.domain\.com/i', $_SERVER['HTTP_HOST'], $matches))
return $matches[1];
}
Sie Apache so konfigurieren, dass die „speziellen“ Domänen in der Apache-Konfiguration (zB www.mydomain.com, usw.), dadurch gekennzeichnet, in Ihren virtuellen Hostcontainern und haben Sie die anderen Standard zu Ihrem ersten virtuellen Host. Sie können die Basis-URL dann in eine Dispatch-Anwendung umschreiben, die die URL überprüft und den Benutzer an den richtigen Bereich sendet.
Von Apache 2.0-Dokumentation:
Fast jede Apache Direktive in einen Behälter Virtual gehen kann. Der erste VirtualHost-Abschnitt wird für Anforderungen ohne einen bekannten Server-Namen verwendet.
den Code * Put .mydomain.com in der ersten virtuellen Host zu handhaben:
<VirtualHost *:80>
Servername custom.mydomain.com
DocumentRoot /var/www/html/custom
RewriteEngine on
RewriteRule ^/$ /var/www/cgi-bin/dispatch.cgi [R]
# more configs here
</VirtualHost>
<VirtualHost *:80>
Servername www.mydomain.com
DocumentRoot /var/www/html/homepage
# more configs here
</VirtualHost>
In dispatch.cgi, die anrufende URL prüfen, um festzustellen, wo der Benutzer gehen soll. Stellen Sie sicher, dass Sie Ihr DNS so eingerichtet haben, dass alle Subdomains akzeptiert werden.
Hoffe, dass hilft!
Tatsächlich haben wir diese Technik für das letzte Jahr ohne viel Problem verwendet. Unsere mod_rewrite Config wie folgt aussieht:
RewriteEngine On
RewriteBase/
RewriteCond %{HTTP_HOST} !www.mydomain.com
RewriteCond %{HTTP_HOST} ^([^.]+)\.mydomain\.com
RewriteCond %{REQUEST_URI} !admin
RewriteRule (.*) /admin/ [R=301,L]
RewriteRule ^admin(.*)$ hosted/admin/$1 [QSA,L]
Was ist passiert, dass die Nutzer theiraccount.mydomain.com/admin gerichtet sind.
Wir verwenden dann PHP, um den Kontoanteil des Domain-Namens zu identifizieren. Etwas wie $ _SERVER ['SERVER_NAME'] oder eine Methode, den Domain-Namen zu bekommen und zu parsen, funktioniert sehr gut.
Behalten Sie diese Konfigurationen in der httpd.conf, aber dies wird zu einem CPU-Problem in Websites mit höherem Datenverkehr, wenn es als .htaccess gespeichert wird.
- 1. mod_rewrite Regel für Wartungsseite zu überprüfen, außer für bestimmte Subdomains
- 2. Ordnen Sie alle Subdomains außer einem in mod_rewrite
- 3. Subdomains für Blogs
- 4. mod_rewrite Verwenden von Ordnern zu konvertieren
- 5. Verwenden von relativen URLs mit mod_rewrite
- 6. Django-Caching für Subdomains
- 7. schreiben mod_rewrite für Formulardaten
- 8. Einrichten von Google Analytics für mehrere Subdomains
- 9. Dynamische Erstellung von Subdomains
- 10. mod_rewrite für Namensfelder
- 11. Wann sollte ich Subdomains verwenden oder vermeiden?
- 12. Verwenden von "mod_rewrite" zum Imitieren von SSL Virtual Hosts?
- 13. Ordnerstruktur für Domain und Subdomains
- 14. mod_rewrite für eine beliebige Anzahl von Variablen
- 15. Einstellen von Subdomains mit Hilfe von htaccess
- 16. Verwenden von Rails und Puma mit Subdomains lvh.me?
- 17. Subdomains mit Apache Virtual Host
- 18. .htaccess Mod_Rewrite für mehrere Bedingungen
- 19. Verwenden von mod_vhost_alias mit CakePHP (die mod_rewrite verwendet)
- 20. ng-token-auth für alle Subdomains
- 21. PHP Cookie nur für bestimmte Subdomains
- 22. WSO2 APIM: Subdomains für verschiedene Kontexte
- 23. Flask: Verschiedene Datenbank-Backends für verschiedene Subdomains?
- 24. Lighttpd mod_rewrite zu Apache Mod_rewrite
- 25. PHP setcookie() für Domain, aber nicht Subdomains
- 26. Verschiedene Ansichten für verschiedene Subdomains Schienen
- 27. Aktivieren von mod_rewrite ubuntu
- 28. Mod_Rewrite Regel von .htaccess
- 29. Entfernen von Subdomains aus Formularpost
- 30. Einrichten von Subdomains auf Nginx