Não é possível acessar subdiretórios que não sejam do wordpress, pois o wordpress os substitui por um erro 404


34

Refiro-me a esta pergunta feita anteriormente e não respondeu adequadamente: Wordpress substituindo subdiretórios reais e também páginas / códigos que não são "Wordpress" recebendo erro 404

Eu tenho o mesmo problema e tentei quase tudo o que encontrei na rede. Definitivamente, está relacionado a ter links permanentes ativados no wordpress. No entanto, eu coloquei um novo arquivo .htaccess no subdiretório com:

RewriteEngine off

e o problema ainda existe. Mesmo se eu excluir completamente o arquivo .htaccess do wordpress, o problema ainda existe.

Eu também tentei algumas outras soluções sugeridas, como ErrorDocument 401 "Acesso não autorizado" e ErrorDocument 404 "Acesso não autorizado" e Redirect 301 / mysubdirectory http://www.mydomain.com/mysubdirectory/index.html em vários locais, sem sucesso .

Alguém pode oferecer outra solução? A única maneira de corrigir isso é desativar os permalinks, mas precisamos que eles estejam ativados.

Obrigado,

Nicole


O que acontece se você renomear o index.php para index.bak na pasta raiz do WordPress? O diretório ainda não está acessível?
Horttcore

Você tentou redefinir o URL base em sua subpasta .htaccess (com esta subpasta como valor)?
Cédric G

Respostas:


28

Suponho que você coloque o WordPress na raiz do site e os diretórios externos também estejam na raiz do site. A razão pela qual isso está acontecendo é que os arquivos .htaccess seguem uma hierarquia. Quaisquer diretivas que estejam no arquivo .htaccess de nível superior fluem para baixo e se aplicam a todos os diretórios abaixo dele.

Se for esse o caso, você pode fazer uma de várias coisas:

  1. Mova seu WordPress para seu próprio diretório. Consulte: http://codex.wordpress.org/Moving_WordPress Se você mover o WordPress para seu próprio diretório, de modo que fique no mesmo nível na hierarquia de diretórios do servidor que os outros diretórios que as regras de reescrita do WordPress não podem afetar os outros diretórios.

  2. RewriteEngine Off - isso normalmente funcionaria. Se não estiver funcionando, verifique se você não está usando uma configuração de DNS curinga. Se você tiver um registro curinga * de nome de host apontando para o servidor da Web nas configurações de DNS, poderá causar danos aos arquivos .htaccess e subdomínios.

  3. No arquivo .htaccess na raiz do site, adicione o seguinte ACIMA das diretivas WordPress .htaccess:

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI} ^/subdirectoryname1/(.*)$ [OR]
    RewriteCond %{REQUEST_URI} ^/subdirectoryname2/(.*)$ [OR]
    RewriteRule ^.*$ - [L]
    </IfModule>

Um deles deve funcionar para você.


17

Isso funcionou para mim no passado em uma situação semelhante:

Coloque isso em cima de .htaccess

ErrorDocument 401 default

2
Obrigado! Eu tentei tantas coisas, mas esta é a única solução que funcionou para o meu caso: subdiretório protegido por senha
Rado

2
Também funcionou para mim, alguma explicação sobre o que faz e por que funciona?
Asaf

Isso funciona para mim .. não usando o wordpress, mas OpenCart e tendo o mesmo problema. Uma explicação seria realmente útil.
Billynoah

4

Quando copio meus arquivos para o mesmo servidor, mas com uma pasta de subdiretório diferente, quando tentei acessar minhas páginas, o index.php está funcionando bem, mas as outras páginas não estão, e me dando um erro 404. Desculpe pelo meu inglês ruim !!

Eu apenas olho no meu htaccess o original:

# COMEÇAR WordPress

RewriteEngine On
RewriteBase /
RewriteCond% {REQUEST_FILENAME}! -F
RewriteCond% {REQUEST_FILENAME}! -D
RewriteRule. /index.php [L]

# END WordPress

e coloque o novo com

# COMEÇAR WordPress

RewriteEngine On
RewriteBase / subdiretório pasta
RewriteCond% {REQUEST_FILENAME}! -F
RewriteCond% {REQUEST_FILENAME}! -D
RewriteRule. /subdirectoryfolder/index.php [L]

# END WordPress

Olá @lizette. Bem-vindo aos fóruns da WPSE. Você pode verificar como a formatação funciona aqui.
Pothi Kalimuthu

4

Vejo que este tópico tem alguns meses, mas, caso você nunca o faça funcionar!

Eu tive um problema semelhante, mas meu problema era que a instalação do wordpress estava localizada no subdiretório, o que impedia o acesso da URL às pastas dentro da raiz (fora do diretório de instalação do WP), mas apenas quando os permalinks estavam ativados. Para resolver isso, copiei index.php e .htaccess (copiar não mover) do subdiretório em que a instalação do WP está localizada e os coloquei no diretório public_html raiz (ou em qualquer subdiretório que você está tentando acessar fora da instalação do WP diretório). O arquivo .htaccess já possui as condições de reescrita para links permanentes:

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

Ative os permalinks para atualização e resolveu todos os problemas. Verifique se as permissões para as pastas raiz também estão definidas corretamente, pois isso me causou problemas no passado.


3

Se você ainda está recebendo 404 com o htaccess desativado e verificou os caminhos e sabe que os arquivos estão lá, suas únicas opções restantes são essas três ...

Opções ...

  1. O servidor possivelmente está executando um sistema operacional com distinção entre maiúsculas e minúsculas. O que significa que, se você estiver digitando um caminho e não estiver usando os caracteres exatos e enviá-lo, simplesmente não funcionará.
  2. Permissões: você pode ter as permissões incorretas no arquivo, na pasta ou em uma pasta pai. Tente alterar as permissões para 755 nos arquivos, pastas e pastas pai. Se você tiver acesso ssh (terminal) a ele, vá para o seu root e execute este "chmod -R 755 mydir" e isso definirá recursivamente as permissões para todos eles.
  3. Se você ainda estiver tendo um problema depois de tudo isso, terá um problema de configuração do servidor (provavelmente o Apache). Você precisará conversar com seu provedor de hospedagem sobre isso.

Se nada disso funcionar, você precisará de um novo host.


2

Depois de quase arrancar meu cabelo editando o htaccess, finalmente encontrei uma solução que funcionará para o WordPress.

Eu tive esse problema depois de instalar um script codeiginter no mesmo diretório raiz que o WordPress está instalado.

Depois de tentar todos os truques listados aqui, eu ainda estava recebendo erros 404 nas páginas associadas ao novo script.

Observei que o htaccess do WordPress estava substituindo o htaccess do script. Também observei que outras instalações do WordPress no mesmo diretório não tiveram esse erro 404.

Simplesmente adotei o htaccess da nova instalação do WordPress no mesmo diretório do servidor e o adicionei na pasta em que meu script está localizado. Aqui está como ele se parece:

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

Substitua subdirectoryname pelo nome do seu diretório e coloque esse arquivo htaccess dentro da pasta em que seu script está localizado.

Exemplo: se o site estiver instalado aqui

public_html/

e a nova pasta está localizada

`public_html/example`

copie o htaccess acima e salve-o dentro da pasta 'exemplo' e isso deve funcionar.


1

Examinei as respostas aqui várias vezes, pois encontrei um problema semelhante. Eu tenho arquivos em um subdiretório que gerariam um erro 404 quando tentei acessá-los. Todo o material .htaccess não conseguiu corrigi-lo, como Kirsten Douglas diz, o Wordpress já faz o trabalho.

Minha solução

Encontrei este artigo depois de verificar o error_log no servidor. Eu estava recebendo uma mensagem sobre uid errado para scripts. Eu também notei que o 404 não estava sendo lançado por causa do arquivo, mas porque o servidor não pôde exibir um arquivo 500.html, ou seja, eu tive um erro 500.

Acontece que eu criei arquivos como raiz e precisava alterar a propriedade para o proprietário dos arquivos da web.

Espero que isso ajude outras pessoas que tiveram o mesmo problema!


0

Você poderá adicionar apenas uma RewriteConddiretiva que garanta que as regras do WordPress sejam ignoradas para solicitações dentro da sua subpasta.

RewriteCond %{REQUEST_URI} !^/mysubdirectory
# rest of WordPress rewrite rules

No entanto, você diz que, mesmo sem o WordPress, .htaccessestá enfrentando o problema? Qual é o conteúdo do seu subdiretório .htaccess?

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.