Pergunta com carregamento de páginas de erro 403/404 e htaccess

3

Enviei uma página html 403 e 404 para o meu diretório de temas WordPress e se eu acertar um erro aleatório depois de .com como .com / yyyy então ele carrega a página 404 por exemplo - então tudo é bom ...

No entanto ... eu gostaria que o 403.php fosse mostrado quando alguém fora da minha string IP permitida tentasse acessar minha página de login.

Esta regra .htaccess funciona muito bem, mas cria um loop que nunca termina, pois o WordPress tenta encontrar a página 403.php.

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteCond %{REMOTE_ADDR} !^111\.111\.22\.33$
RewriteRule ^(.*)$ - [R=403,L]
</IfModule> 

Então você pode ver na última linha que existe R = 403 que está tentando encontrar a página 403, mas não pode encontrá-la ...

Por isso, adicionei as seguintes linhas (tentando uma de cada vez), mas elas não funcionaram:

ErrorDocument 403 /403.php
ErrorDocument 404 /404.php

e depois tentei

ErrorDocument 403 /index.php?error=403
ErrorDocument 404 /index.php?error=404

E não há alegria ...

O modelo 403 e 404 deve ter php específico do WordPress no topo do modelo?

Ou - como posso chamar corretamente o 403.php quando o usuário SEM o endereço IP correto tenta acessar a página de login?

Obrigado!

    
por henry 17.09.2017 / 06:18

2 respostas

0
  

cria um loop que nunca termina, pois o WordPress tenta encontrar a página 403.php

Não é o WordPress, mas o Apache. O WordPress nunca vê o pedido.

Você precisa abrir uma exceção para o seu documento de erro 403 personalizado, caso contrário, as diretivas que você publicou emitiriam outro 403 para o próprio documento de erro ... um loop infinito.

Se o seu ErrorDocument for definido da seguinte forma:

ErrorDocument 403 /403.php

Em seguida, você pode criar uma exceção antes das regras existentes assim:

RewriteRule ^403\.php$ - [L]

O que efetivamente instrui o mod_rewrite / Apache a não fazer nada quando o documento /403.php é solicitado.

Ou incorpore isso ao bloco de regras existente. Por exemplo:

RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteCond %{REMOTE_ADDR} !^111\.111\.22\.33$
RewriteRule !^403\.php$ - [R=403,L]

O prefixo ! no padrão RewriteRule nega a expressão regular. Portanto, este bloco de regras só será processado se o documento /403.php for não solicitado. Note que [R=403,L] é o mesmo que [F] .

Ou você pode simplesmente desativar seu documento de erro personalizado e usar a resposta de erro padrão do Apache:

ErrorDocument 403 default
    
por MrWhite 17.09.2017 / 11:39
-1
  1. O Wordpress foi criado no modelo 404 e 403, chamado 404.php e 403.php no seu modelo.

  2. OU, Você também pode definir qual página / ação será carregada quando o código de erro especificado for enviado pelo código de resposta HTTP detectado, coloque isso no arquivo functions.php:

function detect_response_header(){ if (http_response_code() == 403) { // do some action here, include template file, redirect to outside wordpress environment (file that not WordPress not involved in your site) or whatever } } add_action('template_redirect','detect_response_header');

ref:

enlace

    
por Asisten 17.09.2017 / 06:37

Tags