1 votes

Comment créer une règle mod_rewrite qui utilise le nom du sous-domaine pour réécrire l'URL ?

Comment créer une règle mod_rewrite qui utilise le nom du sous-domaine pour réécrire l'URL ?

Ce que je veux faire, c'est quelque chose comme ça :

Transférer les demandes à partir de http://agency1.company.com À : https://appname.company.com/appname/login.jsp?agencyName=agency1

Il n'est pas nécessaire qu'il s'agisse d'un proxy en direct ; il peut simplement s'agir d'un méta-refresh ou d'un transfert d'URL de base. Il semble que ce soit un scénario courant mais je ne trouve pas d'exemple sur Internet. Il y a beaucoup d'exemples sur le net d'une réécriture d'URI mais pas beaucoup concernant une réécriture d'URL complète (comme j'essaie de le faire ci-dessus).

2voto

muffinista Points 1176

Pour ce faire, vous pouvez utiliser RewriteCond sur la valeur HTTP_HOST. Il y a quelques exemples de cette utilisation dans le document Guide de réécriture d'URL d'Apache . Vous feriez quelque chose comme ça :

RewriteEngine on
RewriteCond   %{HTTP_HOST}                 ^[^.]+\.company\.com$
RewriteRule (.*) https://appname.company.com/$1?agencyName=%1 [R,L,QSA]

Cette méthode n'a pas été testée et peut ne pas fonctionner telle quelle, mais elle devrait vous mettre sur la bonne voie.

2voto

Oneiroi Points 1968

Pour ce faire, vous pouvez utiliser les rétro-références.

RewriteEngine On
RewriteCond %{HTTP_HOST} ([^\.]+)\.domain\.com  [NC]
RewriteRule ^(.*)$ https://appname.company.com/appname/login.jsp?agencyName=%1 [R=301,L]

Cependant, notez que cela va finir par rediriger à nouveau une fois que le 301 est suivi, SI la redirection doit se faire sur HTTP seulement, utilisez le bloc suivant.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ([^\.]+)\.domain\.com  [NC]
RewriteRule ^(.*)$ https://appname.company.com/appname/login.jsp?agencyName=%1 [R=301,L]

%1 fait référence à la première regex "capture" dans la ligne RewriteCond, si vous deviez utiliser plusieurs points %2 et ainsi de suite seraient disponibles.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X