Définir des URL pour redirect vers une URL spécifique sans réécriture

Je construis un webscheduler qui a une structure multi-locataire, ce que j’essaie de faire est d’atsortingbuer une URL personnalisée qui pointe vers mon application à chaque acheteur.

Donc, essentiellement, lorsqu’un utilisateur achète une licence de ma part, je crée une URL personnalisée sur mon serveur Web comme ceci:

http://webserver/foo.scheduler.com/login 

foo est le nom de l’utilisateur qui a acheté la licence, et scheduler est une partie par défaut de l’URL, un autre exemple avec plus d’acheteurs:

 http://webserver/foo.scheduler.com/login http://webserver/foo2.scheduler.com/login http://webserver/foo3.scheduler.com/login 

essentiellement, il y a trois acheteurs (mes clients), chaque sharepoint terminaison personnalisé me permet d’identifier les références de firebase database correctes, car dans ma logique, chaque client dispose d’une firebase database spécifique pour plus d’organisation des données.

En fait, mon application est située sur ce noeud final:

 http://webserver/scheduler 

Je veux savoir s’il est possible de pointer toutes les URL personnalisées vers http://webserver/scheduler , sans réécrire l’URL dans le navigateur, par exemple lorsque l’utilisateur http://webserver/foo.scheduler.com/login à http://webserver/foo.scheduler.com/login in le vrai est http://webserver/scheduler/login , mais l’utilisateur continue à voir http://webserver/foo.scheduler.com/login .

Comment faire ça? Dans mon .htaccess , disponible à la racine du dossier de l’application, j’ai ce contenu:

 RewriteEngine On RewriteBase /webscheduler/ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 

Cela me permet de réécrire le chemin de base vers l’index et de transférer la trace vers le contrôleur spécifique.

Heureux de vous aider avec cela.

Obtenez un certificate SSL valide pour * .scheduler.com. Vous allez en avoir besoin si vous voulez que cela fonctionne. Êtes-vous sûr de vouloir utiliser HTTPS? Votre autre URL n’est pas HTTPS. Ensuite, vous devrez configurer votre hôte virtuel pour que * .scheduler.com fonctionne correctement avec ce certificate. N’ayant que :

  ServerAlias *.scheduler.com DocumentRoot "/var/www/html/progetti/scheduler"  

Ne va pas être assez comme ça. Vous avez besoin de tous les éléments de mod_ssl qui s’installent ici, comme avec l’autre hôte virtuel. Vous pouvez simplement utiliser cet hôte HTTPS par défaut au lieu d’en append un autre et le modifier.

La première chose à faire est de faire en sorte que votre hébergement fonctionne pour https: //*.scheduler.com/, puis de le pointer au bon endroit.

Qu’est-ce que votre endpoint est http://webserver/scheduler ? Ce n’est pas un nom de domaine valide. Veuillez préciser ce que vous entendez par là et je mettrai à jour ma réponse avec plus d’informations. Le code est-il sur le même serveur?

Mettre à jour

Donc, pour faire cela sans SSL, ajoutez ce qui suit à votre “000-default.conf”, après ce qui existe actuellement:

  ServerAdmin [email protected] ServerName www.scheduler.com ServerAlias *.scheduler.com UseCanonicalName off DocumentRoot /var/www/html/progetti/scheduler ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined  Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all   

Mettre à jour

Pour que http: //webserver/foo.scheduler.com fonctionne et serve / scheduler, ajoutez-le à VirtualHost déjà présent. Pas le nouveau ajouté ci-dessus, l’original en haut.

 RewriteEngine on RewriteRule ^(/[^./]+\.scheduler\.com)(?:$|/(.*)$) /scheduler/$2 

Laissez-moi savoir tous les problèmes. Si vous préférez le mettre dans votre fichier .htaccess, il faudra le mettre à jour.

Remarque: je prends littéralement vos instructions indiquant que l’application utilise http:// et que les clients utiliseront les URL https:// . Je suppose également que les clients frappent le même serveur que celui qui héberge l’application.


Le moyen le plus simple est probablement de configurer un VirtualHost pour votre application actuelle et un autre pour les autres URL.

Donc, en supposant que votre application réside dans /var/www/html/scheduler , votre VirtualHost existant ressemble à VirtualHost :

  ServerName webserver DocumentRoot "/var/www/html"  

Vous devez append votre conf.d/ssl.conf pour avoir quelque chose comme:

 NameVirtualHost *:443  ServerAlias *.scheduler.com DocumentRoot "/var/www/html/scheduler"