Question Puis-je effectuer une redirection complexe d'URL et de sous-dossiers sans utiliser le fichier HOSTS?


J'ai un logiciel hérité qui ne sera pas mis à jour et je n'ai aucune possibilité de modifier, ce qui appelle une URL spécifique pour les informations. Cependant, cette URL a par la suite changé et ne renvoie plus de résultat de travail. Voici l'exemple: http://subdomain1.domain.com/sub1/sub2/sub3/[NUMBER]

Leur structure actuelle est la suivante: http://subdomain2.domain.com/sub4/[NUMBER]

Si je comprends bien, HOSTS est uniquement basé sur IP. Y a-t-il un moyen pour moi de forcer quelque chose qui appelle le premier exemple pour retourner le deuxième exemple?

Merci


3
2017-09-21 14:49


origine


L'application utilise ces URL pour accéder à une page Web et l'afficher dans un navigateur intégré ou pour récupérer des données personnalisées à partir de là? - Alberto Martinez
il utilise un navigateur intégré, basé sur les erreurs (fréquentes) que je reçois pour d’autres choses, je crois qu’il est basé sur IE6. - Kevin O.
Ensuite, je pense que j'ai une idée, mais d'abord: installer un serveur Web Apache sur votre machine serait-il exagéré? Cela ne prendrait pas beaucoup de ressources et vous pourriez le démarrer / l'arrêter si nécessaire. - Alberto Martinez
Je ne suis pas le seul à utiliser cet outil et je souhaite déployer une solution si possible à d’autres membres de mon équipe qui, malheureusement, sont moins compétents techniquement que moi. Idéalement, nous aimerions avoir une solution «set-and-forget», mais si nous ne sommes pas disponibles, nous continuerons à truquer le jury à travers d'autres fenêtres. - Kevin O.
Eh bien, vous n'avez pas besoin du serveur installé sur chaque ordinateur, vous pouvez installer le serveur sur un ordinateur de votre réseau local auquel toutes les personnes peuvent accéder (mais vous devez modifier le hostsfichier dans chaque ordinateur). Je vais faire des tests et je posterai une réponse si mon idée fonctionne. - Alberto Martinez


Réponses:


Comme tu dis avec hosts vous ne pouvez contrôler que l’IP, mais comme la nouvelle URL est un autre sous-domaine, nous pouvons combiner en utilisant hosts avec un serveur Web local pour réécrire l'URL. Notez que cette solution de contournement nécessite que l'application utilise un navigateur ou un autre composant qui suit les redirections d'URL.

Je vais utiliser une installation vanille d'Apache car nous n'avons pas besoin de PHP ou d'une base de données, mais si vous voulez, vous pouvez utiliser une distribution comme XAMPP. Les étapes sont les suivantes:

  • Télécharger le code postal Apache de Apachehaus, J'ai utilisé la version VC11 32 bits. Notez que cette version a besoin de la Visual C ++ 2012 redistribuable, téléchargez-le et installez-le, vous ne l'avez pas déjà installé (si vous utilisez une autre version, vous aurez besoin de la version correspondante du Redistribuable C ++).

  • Extraire le contenu du ZIP dans un dossier, je vais utiliser C:\Apache mais vous pouvez utiliser un autre dossier, utilisez simplement ce dossier dans les étapes suivantes.

  • Aller à C:\Apache\Apache24\conf et ouvert httpd.conf avec un éditeur de texte et apporté les modifications suivantes:

    • Rechercher Define SRVROOT "/Apache24" et le remplacer par Define SRVROOT "C:\Apache\Apache24", cela dit à Apache où il est installé.
    • Rechercher #LoadModule rewrite_module modules/mod_rewrite.so et supprimer l'initiale #, cela charge le module de réécriture d'URL.
    • Rechercher DocumentRoot "${SRVROOT}/htdocs", quelques lignes après vous verrez AllowOverride None, remplacez-le par AllowOverride All, cela permet la réécriture d'URL.
  • Vous pouvez lancer Apache manuellement sur C:\Apache\Apache24\bin et l'exécution httpd.exe, mais c'est plus pratique de l'installer en tant que service. Pour ce faire, ouvrez un cmd.exe, allez dans ce dossier et exécutez httpd.exe -k install. Une fois le service installé, vous pouvez le démarrer / l’arrêter à partir de l’outil administratif Services du Panneau de configuration (vous devez le démarrer la première fois après l’installation, puis il sera démarré automatiquement avec Windows).

  • Vérifiez que le serveur est en cours d'exécution, ouvert http://localhost, il montrerait une page d'accueil si fonctionne correctement. Si le serveur ne démarre pas, lancez-le manuellement à partir de la ligne de commande, il affiche l'erreur qui l'empêche de démarrer (par exemple, si vous placez un chemin incorrect dans ServerRoot).

  • Créez un nouveau fichier dans votre éditeur de texte et enregistrez-le sous .htaccess (notez le premier point) dans le dossier C:\Apache\Apache24\htdocs, vous devez mettre les éléments suivants dans ce fichier (remplacez le domaine et le sous-dossier par les vrais):

    RewriteEngine on
    RewriteRule ^sub1/sub2/sub3/(.*)$ http://subdomain2.domain.com/sub4/$1 [R]
    
  • Enfin, éditez le Windows hosts fichier et ajouter la ligne suivante:

    127.0.0.1   subdomain1.domain.com
    

Vous pouvez tester si la redirection fonctionne à partir d'un navigateur, si tout s'est bien passé, maintenant lorsque vous tapez http://subdomain1.domain.com/sub1/sub2/sub3/[anything] le navigateur sera redirigé vers http://subdomain2.domain.com/sub4/[anything].

Si vous souhaitez utiliser cette solution de contournement dans plusieurs ordinateurs, vous n'avez pas besoin d'installer Apache dans chaque ordinateur, en supposant que 192.168.0.10 est l'IP de la machine avec Apache juste ajouter dans le hosts fichier de chaque machine:

192.168.0.10   subdomain1.domain.com

Notez que vous devez autoriser les connexions à Apache dans le pare-feu, au moins au réseau local.


3
2017-09-21 20:09



+1 Darn, bat moi pour ça. =) En tant que FYI, un autre endroit idéal pour les versions de Windows d'Apache sans fioritures est Apache Lounge. Ils ont l'avantage de créer régulièrement les dernières versions officielles d'Apache avec les anciennes et les nouvelles versions de Visual Studio. - Anaksunaman
Aussi, j'ai eu plus de chance avec RewriteRule ^(.*)sub1/sub2/sub3 (bien que cela ait pu être une erreur de l'utilisateur. = P) - Anaksunaman
@Anaksunaman Merci pour le lien, il offre un téléchargement plus clair et le ZIP inclut le manuel. En ce qui concerne la règle, vous suggérez que cela ne fonctionnerait pas dans ce cas, car en plus de changer le chemin de répertoire, il doit capturer le numéro à la fin de l'URL d'origine et le placer à la fin de l'URL réécrit. capturent le texte avant les sous-dossiers. - Alberto Martinez
A propos du lien, pas de problème. =) En ce qui concerne la règle de réécriture, j'apprécie la clarification. Je suis terrible à ce genre de choses. ;-) - Anaksunaman
Merci à Alberto Martinez et @Anaksunaman. Je passe en revue la solution avec mon équipe informatique pour la faisabilité, mais ça a l'air bien! - Kevin O.


Si je comprends bien, HOSTS est uniquement basé sur IP. Y a-t-il un moyen pour moi de forcer quelque chose qui appelle le premier exemple pour retourner le deuxième exemple?

La solution simple consiste à configurer un serveur Web ou un autre proxy de manière transparente. réécrire les demandes d'URL pour l'ancienne configuration sur la nouvelle. Cela peut être accompli avec Apache et mod_rewrite (comme cela est bien détaillé dans la réponse de @ alberto-martinez).

Je ne suis pas le seul à utiliser cet outil et je souhaite déployer une solution si possible à d’autres membres de mon équipe qui, malheureusement, sont moins compétents techniquement que moi. Idéalement, nous aimerions une solution «set-and-forget» [.]

Étant donné que vous avez également exprimé le souhait d’éviter les fichiers hôtes (peut-être pour des raisons plus techniques), vous pouvez envisager d’utiliser une solution DNS associée à Apache.

Fondamentalement, ce serait une redirection locale supplémentaire (via DNS) de sous-domaine1.domaine.com au serveur hébergeant Apache (ou autre). Tant que les utilisateurs du logiciel étaient connectés à ce serveur DNS, il ne serait pas nécessaire de modifier le fichier hosts de chaque ordinateur.

Mises en garde

  • Vous devez être précis sur l'utilisation de sous-domaine1.domaine.com. Si vous venez de mettre une entrée pour domain.com, cela causerait des problèmes (comme sous-domaine2.domaine.com serait également attrapé).

  • Si vous avez utilisé cette solution, vous pourrait de modifier la règle de réécriture (j'ai rencontré des problèmes, mais d'après les aimables commentaires d'Alberto, cela semble basé sur une méthodologie de test / une erreur de l'utilisateur).

  • Le clonage de domaines publics de premier niveau (tels que .com) et peut-être plus avec un domaine actif, vous pouvez donc faire des recherches avant de déployer une solution similaire.


0
2017-09-22 10:34