agregando reglas de reescritura en .htaccess

4

Estaba leyendo esta respuesta , y traté de usar su guía para ocultar página de inicio de sesión . Se sugiere editar el archivo .htaccess de mi sitio web a algo como esto:

RewriteEngine On
RewriteBase / 
##### ABOVE THIS POINT IS ALREADY INSERTED BY WORD PRESS
##### Michi’s code is BELOW #####
RewriteCond %{REQUEST_URI} wp-admin/
RewriteCond %{QUERY_STRING} !YOURSECRETWORDHERE
RewriteRule .*\.php [F,L]
RewriteCond %{QUERY_STRING} !YOURSECRETWORDHERE
RewriteRule ^ADMINFOLDER/(.*) wp-admin/$1?%{QUERY_STRING}&YOURSECRETWORDHERE [L]
##### Michi’s code is ABOVE #####
##### BELOW THIS POINT IS ALREADY INSERTED BY WORD PRESS
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Mi archivo .htaccess comienza con estas líneas:

# 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

Quiero saber si agrego algo entre # BEGIN WordPress y # END WordPress . ¿Es posible que se sobrescriba con wordpress o no? Esto es habitual en los scripts automatizados, pero como no se mencionan advertencias, quiero saber si es seguro agregar algunas reglas dentro de este bloque.

    
pregunta VSB 15.03.2018 - 21:47

4 respuestas

5

Wordpress usa esos marcadores para poner sus reglas entre. Nunca he puesto y nunca pondría reglas personalizadas allí.

Echa un vistazo a insert_with_markers() y save_mod_rewrite_rules() en wp-admin/includes/misc.php

Más notablemente este bloque de comentarios que responde a su pregunta:

/**
 * Inserts an array of strings into a file (.htaccess ), placing it between
 * BEGIN and END markers.
 *
 * Replaces existing marked info. Retains surrounding
 * data. Creates file if none exists.
 */
    
respondido por el David Sword 15.03.2018 - 22:41
1

Aparte: El código de Michi no es del todo correcto, y quizás no sea tan seguro como podrías pensar ...

##### Michi’s code is BELOW #####
RewriteCond %{REQUEST_URI} wp-admin/
RewriteCond %{QUERY_STRING} !YOURSECRETWORDHERE
RewriteRule .*\.php [F,L]
RewriteCond %{QUERY_STRING} !YOURSECRETWORDHERE
RewriteRule ^ADMINFOLDER/(.*) wp-admin/$1?%{QUERY_STRING}&YOURSECRETWORDHERE [L]
##### Michi’s code is ABOVE #####

Al primer RewriteRule le falta un argumento de sustitución . Esto resultará en que la solicitud se reescriba (incorrectamente) a /[F,L] , lo que resultará en un 404. Ok, entonces el acceso está esencialmente bloqueado, pero la intención es servir a un 403 Forbidden (que es lo que es la bandera F ) para). Por lo tanto, lo siguiente:

RewriteRule .*\.php [F,L]

Debería reescribirse como:

RewriteRule \.php$ - [F]

Note el uso del guión ( - ) para el segundo argumento. Esto parece una omisión accidental en el código original. Además, no es necesario el indicador L cuando se utiliza el indicador F .

RewriteCond %{QUERY_STRING} !YOURSECRETWORDHERE
RewriteRule ^ADMINFOLDER/(.*) wp-admin/$1?%{QUERY_STRING}&YOURSECRETWORDHERE [L]

Esta segunda regla le permite obtener acceso si conoce el ADMINFOLDER . ¿El YOURSECRETWORDHERE está esencialmente anulado (y no es requerido por el usuario final)? Entonces, el ADMINFOLDER es realmente el "secreto" que debe ser largo y críptico. (TBH, no hay necesidad de 2 "secretos" aquí, cuando lo haré).

Cualquier directiva de bloqueo como esta debe ir antes del controlador frontal de WordPress. (Aunque si solo está bloqueando archivos físicos, entonces no importa estrictamente para ser funcional, ya que el controlador frontal de WP solo enruta las rutas URL que no se asignan a archivos / directorios físicos).

    
respondido por el MrWhite 17.03.2018 - 03:05
0
  

Esto es habitual en los scripts automatizados

Exactamente. Cuando wordpress necesitará volver a generar la regla htaccess, leerá el archivo actual y reemplazará la sección "wordpress" en él. Si necesita reglas para estar en esa sección, puede escribir un complemento para anular / cambiar las reglas que se generan.

Notas al margen: la oscuridad no es seguridad, la fuerza bruta no es la forma en que los sitios se piratean, y tendrá que deshabilitar xml-rpc, y quizás más tarde también el resto de la API.

    
respondido por el Mark Kaplun 15.03.2018 - 22:43
-3

No, no debería interferir, tengo reglas dentro de ese bloque y todas están todavía activas, incluso después de cambiar la estructura del enlace permanente. Espero que esto ayude.

    
respondido por el Oliver Leach 15.03.2018 - 21:50

Lea otras preguntas en las etiquetas