Coloque arquivos HTML estáticos no caminho abaixo da página do WordPress

4

Eu tenho uma instância do WordPress em execução na raiz do meu domínio.

Uma página do WordPress está localizada em www.example.com/product/ . Coloquei alguns arquivos HTML estáticos em um caminho abaixo para que os visitantes possam ir para www.example.com/product/documentation/ , onde um index.html e outros arquivos HTML estão ativos.

Agora posso acessar os arquivos HTML estáticos muito bem, mas ao acessar o site do WordPress (por exemplo, www.example.com/product/ ), recebo um erro 403 Proibido.

Como posso disponibilizar os arquivos HTML estáticos nesse URL, mantendo o acesso à página do WordPress?

Aqui está o meu arquivo .htaccess (acho que é o padrão não modificado)

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Desculpe se essa pergunta já foi respondida, mas só encontrei dúvidas sobre problemas com a exibição do conteúdo estático em vez do conteúdo do WordPress.

    
por Johannes Dorn 18.08.2017 / 09:52

1 resposta

1

Ao criar um diretório físico da mesma forma que um URL (virtual) do WordPress, você criou um conflito. O URL precisa ser roteado por meio do WP, mas o controlador de frente padrão (o código .htaccess mostrado acima) exclui especificamente os diretórios físicos de serem reescritos.

O erro 403 Proibido ocorre porque você não tem um documento de índice de diretório (por exemplo, index.html ou index.php ) no subdiretório /product . (E nem você quer um, apenas no caso de você estar se perguntando.)

Dependendo do seu site, você pode simplesmente remover a verificação do diretório no front controller. Por exemplo (apenas comentou):

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Isso significa que as solicitações para qualquer diretório físico (apenas o diretório nulo) não estarão acessíveis, elas serão passadas pelo WP. No entanto, isso provavelmente entrará em conflito com sua URL /product/documentation/ . Nesse caso, você pode adicionar algo como o seguinte antes das diretivas acima:

RewriteRule ^product/documentation/$ /product/documentation/index.html [L]

(Caso contrário, você receberá um WordPress 404 se qualquer diretório físico for solicitado, onde o URL não existe no WP.)

Como alternativa, você pode explicitamente fazer uma exceção para este subdiretório e rotea-lo manualmente através do WP (ou seja, reescrevê-lo para index.php ). Por exemplo, antes do controlador frontal existente (na parte superior do arquivo), inclua o seguinte:

RewriteRule ^product/?$ /index.php [L]
    
por MrWhite 18.08.2017 / 22:38