2009-10-01 7 views
0

J'ai un serveur avec IIS7 que j'utilise pour héberger plusieurs sites différents à tester. En raison d'une surabondance de bureaucratie, je ne peux pas utiliser les en-têtes d'hôte (je ne peux pas obtenir de nouvelles entrées sur notre serveur DNS interne et les utilisateurs ne peuvent pas changer leur fichier hosts local).Comment utiliser la réécriture d'URL IIS7 pour masquer des répertoires virtuels?

J'ai mis en place le site par défaut dans IIS n'avoir que des répertoires virtuels qui ont des versions de test de mes sites

Default Site
---> TestSite1
---> TestSite2

Alors, quand je demande au tester l'utilisateur pour tester un site, je leur dis d'aller à http://testserver/testsite1

Le problème est que les sites utilisent des chemins virtuels partout donc ils ne fonctionnent pas correctement. Par exemple, le site recherche la feuille de style en utilisant /css/main.css mais il ne la trouvera pas car il n'y a pas de dossier /css à la racine du site par défaut. Il y a beaucoup trop de choses comme ça à corriger pour changer le fonctionnement du site.

La réécriture d'URL IIS7 va-t-elle m'aider ici? Si oui, que dois-je utiliser pour le modèle regex?

Répondre

0

Je ne pense pas que la réécriture vous aidera dans cette situation.

Si vous pouvez modifier le code que vous pouvez faire quelque chose comme ajouter

<base href="http://testserver/testsite1/" /> à la balise <head> de votre modèle maître (si vous en avez un) si la racine absolue/sera toujours résoudre le répertoire virtuel approprié.

J'ai également vu des gens utiliser du code comme get_img('button.jpg') qui va résoudre le bon chemin à travers la logique côté serveur.

+0

Malheureusement, la modification du code n'est pas pratique. Il semblerait que je devrais m'appuyer sur les gars de notre réseau pour obtenir les entrées DNS afin que je puisse utiliser les en-têtes de l'hôte. Je considérerai cette option pour de futurs projets cependant. Merci. – HitLikeAHammer

0

La réécriture d'URL ne fera rien de plus que ce que les chemins virtuels vous fourniront. Ils aideront à traduire une demande entrante pour accéder à la bonne page d'application, mais ils ne pourront pas ajuster les liens absolus relatifs au serveur interne au sein de cette application pour atteindre les bonnes URL.

Vous voudrez peut-être envisager quelque chose comme un reverse proxy où vous avez votre serveur de test avec ses nombreuses applications virtuelles agissant comme un proxy pour les applications sous-jacentes. Il peut traiter les réponses et réécrire les URL intégrées aux bons chemins d'URL (par exemple en insérant une balise <base href=''> comme le suggère Richard ou en changeant les liens html réels). Je crois qu'il y a peut-être des procurations inversées là-bas qui le font hors de la boîte, mais je n'en ai aucune expérience. Si vous voulez de l'aide avec cette option, je vous suggérerais de passer à Serverfault puisque la mise en place d'une telle chose est plus axée sur le serveur que la programmation.

Questions connexes