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.
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
?