Estou executando o IIS 10 no Windows Server 2019, com instalação do WordPress (entre outras coisas), com URL Rewrite 2.1 instalado. O IIS está configurado corretamente para o aplicativo Wordpress, que está funcionando bem por si só.
Estou tentando definir regras de reescrita de URL do diretório raiz do servidor que enviará determinadas solicitações ao aplicativo WordPress.
Se eu navegar para https://this.is.my.server.com/wp/this-is-a-test/
, a página carrega bem.
Eu defino um mapa de reescrita que inclui uma entrada para enviar /this-is-a-test
para /wp/this-is-a-test/
e crio uma regra de reescrita que usa esse mapa para redirecionar solicitações. Funciona bem - o URL original retorna um status HTTP 301 e a solicitação é encaminhada para o URL esperado. Aqui está a regra:
<rule name="Rewrite rule1 for RewriteFriendlyUrlsToBlog" enabled="true" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{RewriteFriendlyUrls:{REQUEST_URI}}" pattern="(.+)" />
</conditions>
<action type="Redirect" url="{C:1}" appendQueryString="true" logRewrittenUrl="true" />
</rule>
No entanto, preciso de uma regra de reescrita, não de um redirecionamento. Se eu editar esta regra para ser reescrita, recebo um erro 404. A regra ajustada é exatamente igual à anterior, exceto por ser uma reescrita em vez de um redirecionamento:
<rule name="Rewrite rule1 for RewriteFriendlyUrlsToBlog" enabled="true" stopProcessing="false">
<match url=".*" />
<conditions>
<add input="{RewriteFriendlyUrls:{REQUEST_URI}}" pattern="(.+)" />
</conditions>
<action type="Rewrite" url="{C:1}" appendQueryString="true" logRewrittenUrl="true" />
</rule>
As informações detalhadas sobre erros incluem:
Requested URL: https://this.is.my.server.com/wp/this-is-a-test/
... o que sugere duas coisas para mim:
- A própria regra de reescrita está enviando a solicitação corretamente, mas
- A solicitação reescrita pode estar faltando informações necessárias para que o PHP/WordPress interprete adequadamente a solicitação ou
- A regra na pasta WordPress que redireciona solicitações que não são um arquivo ou uma pasta
index.php
não está sendo executada por algum motivo.
Mas não sei o que precisaria ser feito para que essa regra de reescrita funcionasse corretamente.
Por tentativa e erro, descobri que, para reescrever corretamente, preciso reescrever
index.php
- garantindo que a opção 'Anexar string de consulta' esteja marcada - e não o URL esperado.Isso parece funcionar:
Também funciona usando um mapa de reescrita.
Isso me sugere que, para a reescrita, a regra dentro da pasta WordPress que reescreve solicitações que não são arquivos nem pastas para index.php não está sendo processada, independentemente da opção 'stopProcessing' estar definida.