Comment avoir CakePHP livrer le contenu sur les différents sous-domaine?
-
27-09-2019 - |
Question
Je suis la construction d'un portail qui aura un contenu différent des villes ..
Quand quelqu'un vient sur le site je les veux choisir la ville puis procéder
à
ou
cela peut être fait en utilisant une base de données unique et l'installation de CakePHP?
La solution
Oui il est possible.
En gros, dans votre DNS, vous devez autoriser * .site.com être hébergé sur une seule machine. De cette façon, peu importe ce que vous tapez la sous-domaine machine sera le même.
un exemple dns enregistrement:
* A 10.0.0.1
Ensuite, dans la déclaration d'hôte virtuel que vous devez mettre
<VirtualHost *>
DocumentRoot /var/www/path_to_site
ServerName site.com
ServerAlias www.site.com *.site.com
</VirtualHost>
Ainsi, peu importe ce que vous tapez à savoir something.site.com ou city.site.com sera redirigé vers une seule application.
Il vous suffit d'analyser l'hôte du php (de préférence dans AppController) et de transformer le sous-domaine filtre.
Il est un peu abstrait, mais de la façon dont je le faire.
Modifier (réponse au commentaire): Il est une question de la façon dont il est construit le système. En gros, si yo ont:
cite1.site.com
dans votre AppController vous pouvez avoir quelque chose comme:
class AppController extends Controller {
function beforeFilter(){
$host = explode('.', $_SERVER["HTTP_HOST"]);
$subdomain = $host[0];
Configure::write('city', $subdomain);
$this->City->getId($subdomain); //function in City model fetching City ID by city name
...
}
}
Donc, fondamentalement, après cela dépend ce qui est l'architecture de votre application et la façon dont vous traitez avec cette ville.