Pregunta con la carga de las páginas de error 403/404 y htaccess

3

Subí una página html 403 y 404 a mi directorio de temas de WordPress y si encuentro un error aleatorio después de .com como .com / yyyy, por ejemplo, carga la página 404, así que todo está bien ...

Sin embargo ... me gustaría que se muestre el 403.php cuando alguien fuera de mi cadena de IP permitida intente acceder a mi página de inicio de sesión.

Esta regla .htaccess funciona muy bien PERO crea un bucle interminable cuando WordPress intenta encontrar la 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> 

Así que puedes ver en la última línea que hay R = 403 que intenta encontrar la página 403, pero no puede encontrarla ...

Por lo tanto, agregué las siguientes líneas (probando una a la vez) pero no funcionaron:

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

y luego lo intenté

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

Y no hay alegría ...

¿Deben las plantillas 403 y 404 tener un PHP específico para WordPress en la parte superior de la plantilla?

O, ¿cómo puedo llamar correctamente al 403.php cuando el usuario SIN la dirección IP correcta intenta acceder a la página de inicio de sesión?

¡Gracias!

    
pregunta henry 17.09.2017 - 06:18

2 respuestas

0
  

crea un bucle sin fin cuando WordPress intenta encontrar la página 403.php

No WordPress, pero Apache. WordPress ni siquiera ve la solicitud.

Debe hacer una excepción para su documento de error 403 personalizado, de lo contrario, las directivas que ha publicado emitirán otro 403 para el documento de error en sí mismo ... un bucle sin fin.

Si su ErrorDocument se define así:

ErrorDocument 403 /403.php

Luego puede crear una excepción antes de sus reglas existentes como esta:

RewriteRule ^403\.php$ - [L]

Lo que efectivamente indica a mod_rewrite / Apache que no haga nada cuando se solicita el documento /403.php .

O, incorpora esto en tu bloque de reglas existente. Por ejemplo:

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]

El prefijo ! en el patrón RewriteRule niega la expresión regular. Por lo tanto, este bloque de reglas solo se procesará si no se solicita el documento /403.php no . Tenga en cuenta que [R=403,L] es lo mismo que [F] .

O, simplemente puede desactivar su documento de error personalizado y usar la respuesta de error predeterminada de Apache:

ErrorDocument 403 default
    
respondido por el MrWhite 17.09.2017 - 11:39
-1
  1. Wordpress tiene una plantilla 404 y 403, se llama 404.php y 403.php en tu plantilla.

  2. O, también puede definir qué página / acción se cargará cuando el código de error especificado se envíe por el código de respuesta http detectado, ponga esto en su archivo 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

    
respondido por el Asisten 17.09.2017 - 06:37

Lea otras preguntas en las etiquetas