Impedir que regras de regravação de URL sejam herdadas por subdiretórios no IIS7

10

Eu tenho uma configuração de reconfiguração de URL para URLs limpos em um CMS e meu web.config se parece com isso:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Clean URLs" stopProcessing="true">
                    <match url="^([^/]+)/?$" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="?id={R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Basicamente, ele transforma index.php?id=something em something para URLs limpos. Muito simples e funciona bem.

Como é comum em CMSs, para evitar que o backend seja interrompido, cada subdiretório requer <remove name="Clean URLs" /> ou <clear /> em seu web.config, portanto, a regra não é herdada.

Existe uma maneira de especificar na regra pai que ela não deve ser herdada por seus filhos de alguma forma limitando o escopo da regra apenas ao diretório atual? Algo como <rule name="Clean URLs" stopProcessing="true" inherit="no"> seria épico.

    
por Rich Jenks 16.11.2012 / 15:17

2 respostas

12

Encontrou a resposta após 4,5 horas de pesquisa no Google!

link

Basicamente aproveitando

<location path="." inheritInChildApplications="false"> 
    <system.webServer>
        <!-- ... -->
    </system.webServer>
</location>
    
por 16.11.2012 / 18:50
6

Recentemente encontrei este problema, em uma situação semelhante. Mas a resposta do rjenkins parece causar problemas com aplicativos virtuais que dependiam da herança de configurações pai.

Se você souber o nome da regra de regravação, basta fazer isso:

<rewrite>
  <rules>
    <remove name="RewriteNameToDisable" />
  </rules>
</rewrite>
    
por 25.06.2015 / 23:47