IIS7 e URLRewrite está falhando com Redirecionamentos do Wordpress 3.1.1

4

Estou tendo um problema interessante com a migração para o wordpress 3.1.1 multisite e as regras de reconfiguração de URL. o roteamento index.php, assim como o ms-files.php? file = rules estão falhando no fórum. O site ROOT tem uma funcionalidade que funciona quando você direciona os permalinks através de index.php. (Edit: Isso também é predominante nos sites da rede, pelo que eu posso ver Regra 7 é o culpado pelo fracasso aqui.)

A regra para mídia (rule2) também está falhando. O link gerado está puxando para trás um erro de estilo 404 "oops não pode ser encontrado".

Tudo parecia adequado na seção de regras, anexada abaixo:

           <rule name="WordPress Rule 1" stopProcessing="true">
                <match url="^index\.php$" ignoreCase="false" />
                <action type="None" />
            </rule>
            <rule name="WordPress Rule 2" stopProcessing="true">
                <match url="^([_0-9a-zA-Z-]+/)?files/(.+)" ignoreCase="false" />
                <action type="Rewrite" url="wp-includes/ms-files.php?file={R:2}" appendQueryString="false" />
            </rule>
            <rule name="WordPress Rule 3" stopProcessing="true">
                <match url="^([_0-9a-zA-Z-]+/)?wp-admin$" ignoreCase="false" />
                <action type="Redirect" url="{R:1}wp-admin/" redirectType="Permanent" />
            </rule>
            <rule name="WordPress Rule 4" stopProcessing="true">
                <match url="^" ignoreCase="false" />
                <conditions logicalGrouping="MatchAny">
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                </conditions>
                <action type="None" />
            </rule>
            <rule name="WordPress Rule 5" stopProcessing="true">
                <match url="^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*)" ignoreCase="false" />
                <action type="Rewrite" url="{R:1}" />
            </rule>
            <rule name="WordPress Rule 6" stopProcessing="true">
                <match url="^([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                <action type="Rewrite" url="{R:2}" />
            </rule>
            <rule name="WordPress Rule 7" stopProcessing="true">
                <match url="." ignoreCase="false" />
                <action type="Rewrite" url="index.php" />
            </rule>

Você pode visualizar o comportamento exibido visualizando: UB News Staging site 1 < a href="http://staging.business-school-online.com/news/" title="Site de preparação 2"> Site de preparação de notícias do UB 2

Aviso sobre o site de teste 2 como a mídia não funciona corretamente. No entanto, quando você visita o link a seguir, o formato está funcionando e a foto está sendo exibida como deveria. link

edit: o link gerado pelo WP é link

Alguém pode oferecer algumas dicas sobre a regra de reescrita de URL com falha? de acordo com regex buddy a estrutura está correta.

    
por lazyPower 13.04.2011 / 18:03

1 resposta

2

Eu não trabalhei com os links do wordpress em si, mas vamos começar com a regra da mídia. Parece haver duas coisas que faltam na ação. Ele não tem o / news /, disponível em {R: 1}, e não conta para o -300x198. Não contabilizando o tamanho da imagem, isso cuidaria da raiz:

<rule name="WordPress Rule 2" stopProcessing="true">
   <match url="^([_0-9a-zA-Z-]+/)?files/(.+)" ignoreCase="false" />
   <action type="Rewrite" url="{R:1}wp-includes/ms-files.php?file={R:2}" appendQueryString="false" />
</rule>

Para o tamanho da imagem, se você pode editar os links originais que seriam ideais, caso contrário, o URL de correspondência só precisará extrair o .jpg e, na ação, adicione o tamanho da imagem mais .jpg especificamente.

Três boas opções para solucionar problemas são:

  • Failed Request Tracing, mostrará os caminhos antes e depois das regras
  • Os logs do IIS mostram o caminho que foi tentado. Por exemplo, isso deve mostrar algo como "wp-includes / ms-files.php? File = 2011/04 / online-education.jpg"
  • Procmon de www.sysinternals.com mostrará qual caminho está tentando acessar no disco.
por 13.04.2011 / 21:44