/ / Mudando a estrutura do URL do WordPress enquanto mantém os redirecionamentos 301 apropriados com mod_rewrite - php, wordpress, .htaccess

Mudando a estrutura do URL do WordPress enquanto mantém os redirecionamentos 301 apropriados com mod_rewrite - php, wordpress, .htaccess

Atualmente tenho um blog configurado com o WordPress usando URLs como:

www.domain.com/blog/?pid=384092817

Isso foi antes de eu saber alguma coisa sobre qualquer coisa. Há uma quantidade significativa de conteúdo lá agora e quero alterar minha estrutura de URL para:

www.domain.com/my-post-title-384092817

Existe uma maneira de configurar o meu.htaccess e mod reescrevem assim quando os usuários vão para o primeiro URL eles recebem um redirecionamento 301 para o segundo URL? Eu sei mudar minha configuração de endereço WordPress (URL) de www.domain.com/blog para www.domain.com e minha configuração de permalink para /% postname% -% post_id%, mas como eu digo aos URLs antigos para redirecionar para os novos?

Respostas:

3 para resposta № 1

Dependendo da versão do seu WP, você pode simplesmente usar o Link permanente de redirecionamento - deve fazer o truque para você dentro do WordPress e sem o mod_rewrite. No entanto, como no WordPress 2.3, muito disso deve funcionar automaticamente. Nesse ponto, a única coisa que você deve fazer é redirecionar todos os seus / blog / ... pedidos para a rota, o que você pode fazer via mod_rewrite mais ou menos assim:

RewriteRule ^blog(.*) $1 [QSA]

4 para resposta № 2

Você realmente quer dizer que quando os usuários vão para o segundo URL, eles serão reescritos para o primeiro? Isso pode ser feito com

RewriteRule /blog/.+-(d+)$ /blog/?pid=$1

Se você quiser enviar redirecionamentos 301 do antigoURLs para os novos, então você não pode fazer isso com um arquivo .htaccess. A razão é que o mod_rewrite do Apache não tem acesso ao título do seu post, então ele não saberá qual título inserir no URL. Você teria que fazer esse redirecionamento com o PHP.

EDITAR: y "sabe o que, na verdade isso" não é inteiramente verdade. Você pode fazer algumas coisas bem loucas com o RewriteMap diretiva, como instruir o Apache para pedir um programa arbitrário para executar a reescrita, e dessa forma você poderia tem, digamos, um script PHP que faz algum banco de dadostrabalhe para descobrir qual é o título e reescreve o URL adequadamente com base nisso. Mas isso parece uma solução supercomplicada e eu não sugeriria fazê-lo - será muito mais limpo e mais fácil enviar o redirecionamento diretamente do PHP.