web-dev-qa-db-fra.com

Wordpress ne voit pas les règles .htaccess

Je suis en train de créer un site Web pour petites entreprises et d’héberger sur un serveur domestique, et j’ai eu du mal à améliorer la sécurité parce que Wordpress ne respecte aucune des règles que j’ai définies dans .htaccess. Je souhaite de préférence bloquer l'accès à wp-login.php ou wp-admin à partir d'une autre adresse IP que la mienne. J'ai donc utilisé ce bout de code que je trouve un peu partout:

ErrorDocument 401 /path-to-your-site/index.php?error=404
ErrorDocument 403 /path-to-your-site/index.php?error=404

<IfModule mod_rewrite.c>

    RewriteEngine on
    RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
    RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
    RewriteCond %{REMOTE_ADDR} !^IP Address One$
    RewriteCond %{REMOTE_ADDR} !^IP Address Two$
    RewriteCond %{REMOTE_ADDR} !^IP Address Three$
    RewriteRule ^(.*)$ - [R=403,L]

</IfModule>

, mais cela n’a pas fonctionné, j’ai essayé un autre point:

# Block access to wp-admin.
order deny,allow
allow from x.x.x.x 
deny from all

(gardez à l'esprit que ces informations sont dans le fichier .htaccess dans le fichier wp-admin comme indiqué, mais cela n'a pas fonctionné, je l'ai donc copié et placé dans le dossier "html" et aucun n'a fonctionné), mais aucun de ceux-ci n'a fonctionné. pensé que cela doit juste être quelque chose avec le code. J'ai donc décidé de protéger le mot de passe wp-login.php avec un mot de passe, le fichier .htpasswd étant en dehors du dossier "html" et ce code dans les deux fichiers .htaccess:

# Protect wp-login
<Files wp-login.php>

    AuthUserFile /var/www/.htpasswd
    AuthName "Private access"
    AuthType Basic
    require user insertusernamehere

</Files>

Cependant, cela n'a pas fonctionné non plus, ce qui me fait penser que WP ne voit même pas les règles qu'il contient.

C'est actuellement le code dans les deux fichiers .htaccess:

ErrorDocument 401 /var/www/html/wp-content/themes/zerif-lite/index.php?error=404
ErrorDocument 403 /var/www/html/wp-content/themes/zerif-lite/index.php?error=404

#Protect wp-login
<Files wp-login.php>

    AuthUserFile /var/www/.htpasswd
    AuthName "Private access"
    AuthType Basic
    require user wpsecure

</Files>

<IfModule mod_rewrite.c>

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

</IfModule>

(commented)Block access to wp-admin
order deny,allow
allow from INSERTMYIPHERE
deny from all
(commented)BEGIN WordPress
(commented)END WordPress

Cela fait quelques jours que je me bats avec cela et je n’ai guère progressé. J'ai regardé ce site: https://www.keycdn.com/support/htaccess-not-working/ pour voir s'il y avait quelque chose là-bas, et Apache "AllowOverride" était réglé sur "Aucun" mais le changeait "Tous" n'a aucun effet. J'ai essayé de vous fournir autant d'informations, cependant, si vous avez besoin de plus, n'hésitez pas à me demander.

1

Apache "AllowOverride" a été défini sur "Aucun" mais sa modification sur "Tous" n'a aucun effet.
:
J'ai changé le "AllowOverride" dans le fichier "Apache2.conf".

On ne sait toujours pas où vous placez exactement AllowOverride. Cette directive ne peut être utilisée que dans un répertoire directory context. c'est à dire. Dans un conteneur <Directory> de votre serveur principal ou de votre configuration VirtualHost.

Vous devriez déjà avoir une section comme celle-ci (qui ne devrait pas être changée):

<Directory "/">
AllowOverride None
</Directory>

La racine du serveur (c'est-à-dire "/") doit uniquement être définie sur None, sinon Apache recherchera les fichiers .htaccess jusqu'à la racine du serveur, ce qui pourrait entraîner des problèmes de sécurité/performances.

Au lieu de cela, vous devez remplacer ceci uniquement pour le répertoire racine de votre document. Cela ira probablement dans votre <VirtualHost> spécifique à votre site. (Ou dans la configuration du serveur principal - après le conteneur <Directory> ci-dessus - si vous n'avez qu'un seul site configuré pour l'ensemble du serveur.) Par exemple:

<Directory "/var/www/html">
AllowOverride All
</Directory>

En supposant que /var/www/html est le chemin absolu du système de fichiers de la racine de votre document, dans lequel se trouve le fichier .htaccess.


ErrorDocument 401 /var/www/html/wp-content/themes/zerif-lite/index.php?error=404
ErrorDocument 403 /var/www/html/wp-content/themes/zerif-lite/index.php?error=404

Aside: Le chemin spécifié dans la directive ErrorDocument doit être un chemin URL relatif à la racine du document, pas à la racine du serveur.


RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$

gardez à l'esprit que ceux-ci vont dans le .htaccess dans le wp-admin comme indiqué

Les deux premières conditions (directives RewriteCond) impliquent qu'elles doivent être placées dans le fichier racine .htaccess, et non dans le fichier .htaccess du sous-répertoire /wp-admin?

1
MrWhite