ASP.NET MVC è ospitato su DiscountAsp.Net e utilizza un puntatore a dominio
-
05-07-2019 - |
Domanda
Ospito un sito Web su DiscountASP.NET e hanno la possibilità di aggiungere un puntatore di dominio per un dominio separato utilizzando il tuo stesso account di hosting. Pertanto, se il sito originale è abc.com è possibile acquistare un puntatore di dominio su xyz.com ed entrambi inizialmente puntano alla stessa posizione principale. L'uso del root per abc.com è OK, ma quando xyz.com è l'indirizzo, voglio reindirizzare a una sottodirectory separata che contiene il codice per xyz.com. Dove dovrei provare a reindirizzare xyz.com per fare riferimento al codice della sottodirectory invece di utilizzare la directory principale? Sto pensando che gestirlo come Global.asax dove in genere risiede tutto il codice di routing è troppo tardi, poiché voglio che il file Global.asax di ciascun sito gestisca i rispettivi siti in modo indipendente.
Un post sul forum DiscountAsp.Net per ASP classico ha discusso l'aggiunta di codice come il seguente al documento predefinito.
Se InStr (UCase (Request.ServerVariables (" SERVER_NAME ")), UCase (" sottodominio1.YourHostedDomainName.com ")) > 0 Quindi Response.Redirect (" / Subdomain1 ") Altrimenti Se InStr (UCase (Request.ServerVariables (" SERVER_NAME ")), UCase (" sottodominio2.YourHostedDomainName.com ")) > 0 Quindi Response.Redirect (" / subdomain2 ") Altrimenti Se InStr (UCase (Request.ServerVariables (" SERVER_NAME ")), UCase (" sottodominio3.YourHostedDomainName.com ")) > 0 Quindi Response.Redirect (" /subdomain3/home.asp") End If
ASP.NET MVC è il mio primo progetto Web e per quello che ho capito tutti i flussi di routing attraverso RegisterRoutes () e la raccolta di rotte che è impostata in Global.asax. Qualche idea?
Soluzione
Devi rendere la sottocartella un Applicazione
separato (nel pannello di controllo di DiscountAsp.net)
Quindi, prova a scrivere un HttpModule
che chiama Response.Redirect
per reindirizzare il browser alla sottocartella nel dominio principale.
Se vuoi mantenere i tuoi utenti nel sottodominio, non credo sia possibile. Non ho mai usato ASP .Net MVC, ma suppongo che i percorsi siano registrati per- AppDomain
, il che significa che la cartella per ciascun sottodominio dovrebbe essere la sua Applicazione
. Non è possibile (AFAIK) trasferire l'esecuzione attraverso AppDomain
s ( Server.Transfer
non lo farà).
Se sbaglio, ed è possibile farlo senza creare Applicazione
, crea un HttpModule
che chiama Server.Transfer
su richieste dal sottodominio (e assicurarsi che i collegamenti siano relativi alla cartella che rappresenta il sottodominio; i percorsi ~ non funzioneranno).
Altri suggerimenti
Il route manager in MVC deve mappare gli URL ai controller. I controller sono codice e la posizione non ha importanza. Non sono a conoscenza di un modo per utilizzare il routing per eseguire il reindirizzamento che è quello che stai cercando. DiscountASP.Net dovrebbe avere un modo per indirizzare il tuo nuovo dominio su una cartella diversa, controllerei il tuo pannello di controllo per un modo per farlo.
Se sei su IIS 7, è probabile che questo utilizzi le intestazioni host per fare la regia per te. In questa situazione (IIS 7 o meno), dovresti essere consapevole che probabilmente gestirai un sito Web in un sito Web. Se il tuo sito radice non è asp.net, le cose probabilmente saranno più facili, tuttavia, se la tua radice (abc.com) è un sito asp.net (sembra che non sia il caso della tua domanda, ma è una buona informazione, quindi ti dirò comunque) il web.configs sarà additivo.
- root
|
|- xyz.com
|
|- web.config (xyz.com)
|
|- web.config (abc.com)
Tieni presente che prima verrà applicato il web.config di abc.com, quindi xyz.com, che possono entrare in conflitto e creare fastidiosi problemi. Ma dovresti prima controllare nel tuo pannello di controllo un modo per indirizzare il tuo nuovo dominio in una cartella diversa. La gestione di più siti Web da un account di hosting condiviso comporta un numero potenzialmente elevato di mal di testa, quindi ti auguro buona fortuna.
Sembra che tu stia tentando di eseguire due siti Web separati, uno su un sottodominio.
Non utilizzo DiscountAsp.Net, ma dovrebbero consentire all'utente di impostare un sito Web separato che offra il proprio sottodominio; contattare il loro supporto.