Πώς να κάνει τους λογαριασμούς χρηστών subdomain σε μια εφαρμογή ιστού

ψήφοι
21

Ψάχνω να επιτρέπουν στους χρήστες να ελέγχουν του υποτομέα της εφαρμογής Είμαι παίζουμε με, σαν Basecamp όπου είναι customusername.seework.com.

Τι απαιτείται για το DNSσκοπό αυτό να επιτρέψει αυτά να δημιουργούνται δυναμικά και να είναι άμεσα διαθέσιμα.

Και πώς θα το συνιστούσαν που ασχολούνται με αυτό στη λογική του χώρου; Htaccessαποφανθεί για την αναζήτηση του υποτομέα στην DB;

Δημοσιεύθηκε 04/08/2008 στις 13:22
πηγή χρήστη
Σε άλλες γλώσσες...                            


4 απαντήσεις

ψήφοι
13

Ο τρόπος που το κάνουμε αυτό είναι να έχουν «πιάσει όλα» για το όνομα τομέα μας είναι νηολογημένα στο DNS, έτσι ώστε anything.ourdomain.com θα επισημάνει στον server μας.

Με Apache μπορείτε να δημιουργήσετε ένα παρόμοιο catch-all για Πατρόν σας. Το ServerName πρέπει να είναι μία στατική όνομα, αλλά η οδηγία ServerAlias ​​μπορεί να περιέχει ένα μοτίβο.

Servername www.ourdomain.com
ServerAlias *.ourdomain.com

Τώρα, όλοι οι τομείς θα ενεργοποιήσει το vhost για το έργο μας. Το τελευταίο μέρος είναι να αποκωδικοποιήσει το όνομα τομέα που πράγματι χρησιμοποιούνται, έτσι ώστε να μπορείτε να ασκηθείτε το όνομα χρήστη στον κώδικά σας, κάτι σαν (PHP):

list( $username ) = explode( ".", $_SERVER[ "HTTP_HOST" ] );

ή RewriteRule όπως έχει ήδη προταθεί ότι σιωπηλά χάρτες user.ourdomain.com/foo/bar να www.ourdomain.com/foo/bar?user=user ή ό, τι προτιμάτε.

Απαντήθηκε 04/08/2008 στις 14:39
πηγή χρήστη

ψήφοι
8

Μην ανησυχείτε για το DNS και ξαναγράψιμο URL

εγγραφή DNS σας θα είναι στατικό, κάτι σαν:

*.YOURDOMAIN.COM A 123.123.123.123

Ζητήστε από τον παροχέα DNS σας να το κάνει για σας (αν δεν έχει γίνει ήδη) ή να κάνετε μόνοι σας, αν έχετε τον έλεγχο εγγραφές DNS σας. Αυτό θα επισημάνει αυτόματα όλα υποτομείς σας (τρέχουσες και μελλοντικές) στο ίδιο διακομιστή HTTP.

Μόλις αυτό γίνει, θα πρέπει μόνο να αναλύσει κεφαλίδα κεντρικού υπολογιστή για κάθε αίτηση HTTP για να ανιχνεύσει τι όνομα είχε χρησιμοποιηθεί για την πρόσβαση σε server-side scripts σας στο διακομιστή http σας.

Υποθέτοντας ότι είστε χρησιμοποιώντας ASP.NET, αυτό είναι το είδος της ανόητο παράδειγμα ήρθα με, αλλά λειτουργεί και δείχνει την απλότητα αυτής της προσέγγισης:

<%@ Language="C#" %>
<%
string subDomain = Request.Url.Host.Split('.')[0].ToUpper();
if (subDomain == "CLIENTXXX") Response.Write("Hello CLIENTXXX, your secret number is 33");
else if (subDomain == "CLIENTYYY") Response.Write("Hello CLIENTYYY, your secret number is 44");
else Response.Write(subDomain+" doesn't exist");
%>
Απαντήθηκε 04/08/2008 στις 13:32
πηγή χρήστη

ψήφοι
2

Το τέχνασμα σε αυτό είναι να χρησιμοποιήσετε τη διεύθυνση URL ξαναγράφοντας έτσι ώστε name.domain.com χάρτες διαφάνεια σε κάτι σαν domain.com/users/name στον server σας. Μόλις αρχίσετε σε αυτή την κατεύθυνση, είναι αρκετά τετριμμένο για την εφαρμογή της.

Απαντήθηκε 04/08/2008 στις 13:28
πηγή χρήστη

ψήφοι
0

Έψαχνα να κάνει κάτι παρόμοιο ( www.mysite.com/SomeUser).

Αυτό που έκανα ήταν που άλλαξε 404.shtmlγια να συμπεριλάβει αυτή την πλευρά του διακομιστή περιλαμβάνει κώδικα (SSI):

<!--#include virtual="404.php" -- >

Τότε δημιουργήθηκε το αρχείο 404.php, όπου αναλύεται το URL για να ελέγξετε το όνομα του χρήστη και έδειξε τις πληροφορίες τους από την βάση δεδομένων.

Απαντήθηκε 12/10/2009 στις 16:28
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more