wake-up-neo.net

Wordpress sieht die .htaccess-Regeln nicht

Ich baue gerade eine Website für kleine Unternehmen auf und hoste auf einem Heimserver. Ich habe ein Problem damit, die Sicherheit nicht zu verbessern, weil Wordpress keine der von mir in .htaccess festgelegten Regeln befolgt. Ich möchte den Zugriff auf die wp-login.php oder den wp-admin vorzugsweise von anderen IP-Adressen als meiner blockieren. Also habe ich diesen Code benutzt, den ich überall finde:

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>

, aber das hat nicht funktioniert, also habe ich es noch einmal versucht:

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

(Denken Sie daran, diese werden in der .htaccess in der wp-admin wie angewiesen, aber das hat nicht funktioniert, also habe ich es kopiert und in den "html" -Ordner gelegt und auch nicht funktioniert), aber keine davon hat funktioniert, also ich dachte, dass es nur etwas mit dem Code sein muss. Also habe ich beschlossen, dass ich nur wp-login.php mit einem Passwort schützen kann, wobei die .htpasswd-Datei aus dem "html" -Ordner stammt und dieser Code in beiden .htaccess-Dateien vorkommt:

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

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

</Files>

Das hat aber auch nicht geklappt, weshalb ich denke, dass WP nicht einmal die Regeln darin sieht.

Dies ist derzeit der Code in beiden .htaccess-Dateien:

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

Ich kämpfe jetzt seit ein paar Tagen damit und habe wenig bis gar keine Fortschritte gemacht. Ich habe auf dieser Website nachgesehen: https://www.keycdn.com/support/htaccess-not-working/ um festzustellen, ob dort etwas vorhanden ist, und Apache "AllowOverride" wurde auf "None" gesetzt, aber es wurde geändert zu "Alle" machte keinen Effekt. Ich habe jedoch versucht, Ihnen so viele Informationen wie möglich zukommen zu lassen, falls Sie weitere Informationen benötigen, können Sie mich gerne fragen.

1

Apache "AllowOverride" wurde auf "None" gesetzt, aber das Ändern auf "All" hatte keine Auswirkungen
:
Ich habe die "AllowOverride" in der "Apache2.conf" -Datei geändert.

Es ist immer noch nicht klar, wo genau Sie AllowOverride einstellen. Diese Direktive kann nur in einem Verzeichnis Kontext verwendet werden. dh In einem <Directory> Container in Ihrer Hauptserver- oder VirtualHost-Konfiguration.

Sie sollten bereits einen Abschnitt wie den folgenden haben (der nicht geändert werden sollte):

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

Der Server-Root (dh "/") darf nur auf None gesetzt werden, andernfalls sucht Apache bis zum Server-Root nach .htaccess-Dateien, was zu Sicherheits-/Leistungsproblemen führen kann.

Stattdessen sollten Sie dies nur für Ihr Dokumentenstammverzeichnis überschreiben. Dies wird wahrscheinlich in Ihrem spezifischen <VirtualHost> für Ihre Site angegeben. (Oder in der Hauptserverkonfiguration - nach dem obigen Container <Directory> -, wenn Sie nur einen Standort für den gesamten Server konfiguriert haben.) Zum Beispiel:

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

Angenommen, /var/www/html ist der absolute Dateisystempfad Ihres Dokumentenstamms, in dem sich die .htaccess-Datei befindet.


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

Nebenbei: Der in der Anweisung ErrorDocument angegebene Pfad sollte ein URL-Pfad relativ zum Dokumentstamm sein, nicht zum Serverstamm.


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

denken Sie daran, diese werden in der .htaccess im wp-admin wie angewiesen

Die ersten beiden Bedingungen (RewriteCond Direktiven) implizieren, dass diese in der Root-Datei .htaccess und nicht in der Datei .htaccess im Unterverzeichnis /wp-admin abgelegt werden sollen.

1
MrWhite