Ter um slug de post personalizado que se choca com um diretório existente

4

Atualmente estou fazendo a transição de um website do CMS existente para o WordPress.

Eu tenho um tipo de post personalizado de 'Episódios', com uma URL de myurl.com/episodes /

Existe também um diretório existente em myurl.com/episodes/ que precisa permanecer no local por razões históricas - ele contém um grande número de imagens e arquivos HTML estáticos que ainda precisam ser resolvidos.

No momento, como o diretório / episodes / existe, o WordPress não chega perto dele, então as páginas do meu tipo de postagem personalizado não são carregadas.

Isso acontece porque o .htaccess padrão do WordPress tem duas regras, que afirmam que qualquer arquivo existente ou diretório existente não deve ser manipulado pelo WordPress:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

Mas essas regras param / episódios / de serem tratadas pelo WordPress. Eu quero que o WordPress manipule / episodes / por padrão, e só não o faça se o arquivo em questão existir.

Mas ter a primeira linha em si - ou seja, passar tudo para o WordPress, a menos que o arquivo em questão exista - não parece funcionar.

Existe uma maneira de reescrever essas regras de reescrita para que o WordPress ainda manipule a solicitação se o diretório existir, mas não se o arquivo existir?

    
por Chris Jenkins 25.04.2015 / 16:17

2 respostas

1

Não está usando o WordPress. Com esse diretório no lugar, seu servidor da Web nem sequer toca no WordPress quando ele lida com a solicitação.

Eu gostaria de:

  • Afaste o máximo possível de suas coisas do uso dessa pasta
  • Renomeie a regra de regravação para que não seja apenas /episodes/ , para que ela não entre em conflito

Você pode tentar mover a pasta e adicionar redirecionamentos, mas nesse nível você está no nível do Apache / Nginx, não no nível do WordPress

    
por Tom J Nowell 25.04.2015 / 17:01
0

linhas amplas do que você precisa fazer

  1. altere o .htaccess para permitir que o wordpress tenha prioridade sobre o diretório
  2. lidar com análise de URL do wordpress

Você tem duas boas opções para lidar com a análise

  • ligar a ação init e verificar se a URL é de um arquivo que existe no diretório
  • faça o arquivo fazer check-in no arquivo 404.php do seu tema antes de gerar qualquer html.

(etapa ignorada: detectar o tipo de arquivo e enviá-lo com a codificação adequada via funções php)

Acho que a abordagem 404 é mais robusta, pois dá a menor prioridade a esses arquivos históricos. Você pode encontrar o gancho que é chamado para carregar o arquivo 404 do tema e usá-lo se preferir deixar a funcionalidade fora do código orientado para apresentação.

O maior problema que você pode enfrentar é o desempenho, pois para cada arquivo pequeno você terá que carregar o wordpress, conectar-se ao DB etc. Pode não ser um grande problema se não houver tráfego para esses arquivos, mas é um risco.

Por isso, o que você deve considerar é refinar o .htaccess para manter o algoritmo atual dos arquivos primeiro quando o URL terminar com .png .jpg .gif .pdf e somente se não for passar o controle para o wordpress.

    
por Mark Kaplun 25.04.2015 / 18:16