Puncte:0

Aplicarea regulilor de rescriere IIS din mai multe web.configs pentru o singură cerere

drapel it

Încerc să configurez o structură de directoare într-un site web IIS cu reguli de rescriere care se aplică la diferite niveluri. De exemplu, luați în considerare următoarea structură:

Site Web implicit
ââ web.config
ââ v1
   ââ web.config
   ââ wwwroot
      ââ salut.txt

Vreau să pot accesa salut.txt prin http://localhost/hello.txt. Am configurat web.config la nivelul rădăcină a site-ului web astfel:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Rewrite to v1" stopProcessing="false">
          <match url="^(?!v1).*" />
          <action type="Rewrite" url="v1\{R:0}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

Și am configurat web.config în v1 director ca acesta:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Rewrite to wwwroot" stopProcessing="false">
          <match url="^(?!wwwroot).*" />
          <action type="Rewrite" url="wwwroot\{R:0}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

Rescrierea cu un singur nivel funcționează când accesez http://localhost/v1/hello.txt, dar rescrierea pe două niveluri nu funcționează pentru http://localhost/hello.txt. Pagina de eroare IIS arată că cererea încă se rezolvă la calea fizică â¦\v1\hello.txt Decat â¦\v1\wwwroot\hello.txt; vedea https://i.stack.imgur.com/KjdH5.png. Rețineți că schimbarea rescrierilor în redirecționări permite ca fișierul să fie servit cu succes.

Există o modalitate de a face acest lucru să funcționeze sau este o limitare a modulului de rescriere a URL-ului? Microsoft pare să susțină că acest lucru este acceptat în Referință de configurare a modulului de rescriere URL:

Reguli Moștenirea

Dacă regulile sunt definite pe mai multe niveluri de configurare, modulul de rescriere URL evaluează regulile în următoarea ordine:

  1. Evaluează toate regulile globale.
  2. Evaluați un set de reguli care include reguli distribuite de la nivelurile de configurare părinte, precum și reguli de la nivelul de configurare curent. Evaluarea se efectuează într-o ordine de la părinte la copil, ceea ce înseamnă că regulile părinte sunt evaluate mai întâi, iar regulile definite la nivelul ultimului copil sunt evaluate ultimele.

Sunt conștient că pot face web.config la nivelul rădăcinii site-ului, faceți referire la interior wwwroot director direct (prin url="v1\wwwroot\{R:0}"). Totuși, nu vreau să fac asta. În cele din urmă voi extinde exteriorul web.config pentru a suporta alte versiuni (v2, v3, â¦), care poate avea sau nu și a wwwroot subdirector, deci ar fi mult mai curat să mențineți orice rescrie specifice versiunii în subdirectoarele interioare din subdirectoarele specifice versiunii web.config.

Am încercat să folosesc urmărirea cererilor eșuate. Regula exterioară, Rescrie la v1, este înregistrat pentru a rula cu succes. Nu există nicio mențiune despre regula interioară, Rescrie pe wwwroot.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.