301 Redirecionar todas as páginas filhas para a página pai, com exceção de algumas páginas filhas para outras páginas em todo o site

1

Como eu iria cerca de 301 Redirecionando todas as páginas filho para a página pai, com exceção de algumas páginas filho 301 redirecionadas para outras páginas específicas em todo o meu site.

Abaixo, funciona para redirecionar todas as páginas filhas para a página pai:

RewriteRule ^(parent-page/). https://www.example.com/$1 [R=301,L]

Como eu faria então 301 Redirecionando uma página filha específica da página pai acima para uma página diferente no site?

Exemplo do redirecionamento 301 que estou tentando realizar após redirecionar todas as páginas filhas para a página pai:

301 Redirect /parent-page/one https://www.example.com/parent-page-two/one
    
por Dzen23 17.09.2018 / 22:21

1 resposta

0
301 Redirect /parent-page/one https://www.example.com/parent-page-two/one

(Aliás, isso deve ser Redirect 301 .... )

No entanto, você não deveria estar usando uma diretiva mod_alias Redirect quando já estiver usando o mod_rewrite (ou seja, RewriteRule ) para o seu redirecionamento geral. O mod_rewrite RewriteRule será sempre executado primeiro, independentemente da ordem aparente das suas diretivas. Se você já estiver usando o mod_rewrite, use o mod_rewrite para redirecioná-lo.

Você deve usar um RewriteRule mais específico antes de seu "genérico" RewriteRule existente. Diretivas mais específicas devem ser as primeiras, pois as diretivas são processadas de cima para baixo (dentro do mesmo módulo).

Por exemplo:

# Enable the rewrite engine (mod_rewrite)
RewriteEngine On

# More specific redirects...
RewriteRule ^parent-page/one$ https://www.example.com/parent-page-two/one [R=301,L]

# Generic redirect last
RewriteRule ^(parent-page/). https://www.example.com/$1 [R=301,L]

Você precisará limpar o cache do seu navegador antes do teste, já que qualquer redirecionamento incorreto (permanente) 301 provavelmente será armazenado em cache pelo seu navegador. Por esse motivo, é mais fácil primeiro testar com redirecionamentos 302 (temporários) para evitar problemas de cache e alternar apenas para 301s (se for essa a intenção) depois de confirmar que tudo funciona.

No entanto, se você já não estiver usando o mod_rewrite para mais nada, então você pode fazer isso com as mod_alias "mais simples". Por exemplo:

# More specific redirects...
RedirectMatch 301 ^/parent-page/one$ https://www.example.com/parent-page-two/one

# Generic redirect last
RedirectMatch 301 ^/(parent-page/). https://www.example.com/$1

Mas não combine redirecionamentos de mod_alias e mod_rewrite, pois você pode obter conflitos inesperados.

Observe que a diretiva mod_alias Redirect é correspondência de prefixo , portanto, isso pode ou não ser adequado em seu cenário. Depende se você tiver outras URLs que iniciam /parent-page/one que não devem ser redirecionadas.

UPDATE: Se você tiver apenas um domínio para o qual está redirecionando e já tiver canonizado o esquema (HTTP ou HTTPS) e o nome do host ( example.com ou www.example.com ), você não necessariamente precisa para especificar uma URL absoluta na substituição . Por exemplo, você poderia usar um caminho relativo à raiz e simplificar a (s) diretiva (s) para ler:

# Generic redirect last
RewriteRule ^(parent-page/). /$1 [R=301,L]

etc.

    
por 18.09.2018 / 01:01