Como evitar o redirecionamento automático?

16

O Wordpress possui um recurso pelo qual ele redireciona automaticamente seus URLs, caso consiga gravá-los incorretamente. Aqui está um exemplo: eu tenho uma página chamadamy-page

Se eu for para:

www.mysite.com/something/my-page/

ele me redirecionará imediatamente para

www.mysite.com/my-page/

como nada existe no primeiro URL.

Como posso desativar esse recurso e obter um 404 se URL digitado incorretamente?

Mazatec
fonte
Se você observar o que está acontecendo (via HttpFox, WireShark ou um sniffer de pacote semelhante), essas páginas serão redirecionadas com um status 301 - Movido permanentemente - que é o comportamento apropriado. Ajuda os mecanismos de pesquisa a manter seus bancos de dados atualizados, entre outras coisas, e o redirecionamento ajuda os usuários a encontrar páginas. Isso pode afetar a maneira como o WordPress lida com as coisas quando você realmente move uma página ou altera um link permanente, portanto, tenha cuidado. Enfim, sua escolha, mas não tenho certeza, é uma boa ideia.
s_ha_dum
Eu sei que é uma coisa boa, eu entendo isso. No entanto, eu tenho um caso de uso específico em que não precisava desse comportamento. Estou desenvolvendo um plug-in que lida com o redirecionamento de URL e, portanto, quero substituir esse comportamento.
Mazatec
Aqui está uma resposta mais correta: link
Binod - GoFundMonica

Respostas:

23

Isso funcionou para mim:

remove_action('template_redirect', 'redirect_canonical');
Mazatec
fonte
Você pode me orientar sobre o que ele fará? o que é redirecionamento canônico? eu sou novo no wordpress
Yatin Mistry
Você acabou de me salvar de muitas dores de cabeça! obrigado ! -D
Jenski
1
Em nenhum lugar onde podemos ver esses redirecionamentos para removê-los individualmente?
Shane Jones
Isso é ótimo. Você sabe por wp-adminque ainda pode estar redirecionando depois de usar isso?
Gezim 3/02
Você pode encontrar uma explicação detalhada sobre esse problema em dev4press.com/blog/wordpress/2015/…
ronnefeldt
5

Como Ash sugeriu, você pode desativar o recurso usando o seguinte código:

remove_action('template_redirect', 'redirect_canonical');

Observando a função redirect_canonical em canonical.php, parece que você também pode modificar o comportamento com seu próprio filtro.

No final da função redirect_canonical (), há uma chamada para filtrar a resposta final:

$redirect_url = apply_filters( 'redirect_canonical', $redirect_url, $requested_url );

Portanto, você pode escrever seu próprio filtro para modificar o redirecionamento final ou retornar nulo para interromper o redirecionamento, com base na entrada, desativando o recurso para um URL específico ou um subconjunto de URLs.

Mike P.
fonte