Je développe un serveur tomcat local pour utiliser mon instance IIS locale en tant que proxy.
Je le fais parce que le déploiement du serveur est un processus difficile, car une grande partie du contenu n'est pas (ce que je décrirais comme) totalement indépendante. Le contenu de différents projets est essentiellement copié à la racine du serveur. Je ne voulais pas m'occuper de cette installation fastidieuse, alors avec l'aide du module de réécriture, je pouvais réécrire les URL dans des répertoires virtuels pour la plupart.
par exemple.,
/js/* -> /someproject/js/*
/css/* -> /someproject/css/*
/**/*.pdf -> /someotherproject/pdf/*
Cependant, il existe quelques cas où ce schéma ne fonctionne pas, en particulier lorsque les répertoires de destination se chevauchent. Dans le déploiement, certaines ressources sont placées dans le même répertoire; il n’ya donc aucun moyen de distinguer qui est lequel. Il n'y a pas de modèle strict pour ces fichiers, c'est un sac mélangé.
par exemple.,
/someproject1/file1.txt -> /file1.txt
/someproject2/book2.doc -> /book2.doc
Donc, étant donné une url /file1.txt
, Je ne saurais pas si je peux réécrire pour aller à someproject1
ou someproject2
. Donc, je pense que je pourrais faire en sorte que cela fonctionne s'il y avait une sorte de hiérarchie vers laquelle les URL à essayer de réécrire. Donc, je pourrais prendre une URL comme /file3.txt
, réécrivez le premier de ces modèles qui semble valide.
/someproject1/file3.txt # if 404, try the next
/someproject2/file3.txt # if 404, try the next
/someotherproject/file3.txt # if 404, try the next
/file3.txt # fallback
Est-ce quelque chose qui ne peut être exprimé qu'en utilisant le module de réécriture d'URL?
la source
http://{Site}/music
ethttp://{Site}/Music
les deux pointent au même{Drive}:\{Path}\SharedMusic
.for /r %i in (*.*) do mklink /h "{CombinedPath}\%~nxi" "%i"
(doubler le%
dans un fichier batch). Vous devrez d'abord effacer le{CombinedPath}
répertoire avecdel {CombinedPath}\*.*
. Vous pouvez essayer de créer des liens symboliques (omettre/h
), mais je ne sais pas si IIS les gérera correctement.Réponses:
J'ai pu faire en sorte que cela fonctionne.
Le premier obstacle était que je ne réalisais pas que tous les types de correspondance conditionnelle n'étaient pas disponibles dans la portée globale (c'est là que j'écrivais mes règles). Seulement
Pattern
était disponible. Je devais changer la portée en portée "distribuée" (règles par site) pour avoir accès auIsFile
etIsDirectory
types de correspondance.Ensuite, à partir de là, je pourrais écrire mes règles avec une sorte de hiérarchie. Commencez par réécrire pour faire correspondre le motif que je veux essayer en premier, puis si cela ne résout pas en fichier, réécrivez-le au prochain motif et répétez l'opération.
Dans mon cas particulier, je voulais d'abord essayer un sous-répertoire particulier, puis les répertoires parents s'ils n'existaient pas. Mais, théoriquement, je pourrais le faire pour n’importe quel ensemble de chemins, à condition de savoir dans quel ordre les essayer.
Donc, pour mon exemple dans la question, je définirais ces règles:
la source