Post navigation

Die perfekte .htaccess für WordPress – PageSpeed und Sicherheit [2018]

Die perfekte .htaccess für dein WordPress sorgt für einen enormen Performanceschub und ein hohes Sicherheitslevel. Setze meine über sechs Jahre perfektionierte .htaccess Datei für dein WordPress-Tuning ein und freue dich über beste Ergebnisse!

Mehr als sechs Jahre Erfahrung sind in meine perfekte .htaccess Datei eingeflossen und sie wurde von Jahr zu Jahr stets verbessert und überarbeitet. Dieses Jahr hat sich einiges geändert, es sind die Bereiche Hotlink Protection und der HTTP Schutz für den Adminbereich dazugekommen. Aktualisiert habe ich die 6G-Firewall auf die neue Version aus 2018.

Letztes Update: 24.03.2018

  • Dazugekommen: Ultimate Hotlink Protection in 2018
  • Dazugekommen: Adminbereich mit HTTP Schutz versehen in 2018
  • Aktualisiert: 6G-Firewall auf Version 2018

Du magst dich vielleicht wundern, dass die Datei nicht gerade ein Leichtgewicht ist. Doch das Laden dieser Datei dauert nur einen Wimpernschlag. Der Effekt auf deine Website hingegen ist enorm. Ohne weitere Optimierungen wird dein WordPress schon deutlich schneller werden, weil alle wichtigen Bereiche komprimiert und gecacht werden.

Alle optionalen Elemente sind mit Rauten (#) auskommentiert, zur Nutzung diese bitte entfernen.

Die perfekte .htaccess Datei teilt sich in zehn einzelne Bereiche auf:

  • HTTP zu HTTPS Umleitung
  • CORS aktivieren für bestimmte Dateitypen
  • Dateien komprimieren und cachen
  • Die 6G-Firewall von Jeff Starr gegen die Einschleusung von Schadcode – aktualisiert 2018
  • Das Blocken von WordPress-Dateien gegen Zugriff von außen
  • Hotlink Protection gegen das Verlinken Deiner Bilder auf anderen Websites – Neu in 2018
  • Das Schützen des Adminbereichs mittels HTTP – Neu in 2018
  • Das Blocken des Sicherheitsrisikos XML-RPC
  • Die HTTP-Security-Header
  • Die WordPress Standard-Regeln

Bitte beachten: Wenn Du diese Datei oder Auszüge daraus verwenden möchtest, dann nutze bitte das Gist am Ende des Artikels. Beim Kopieren des Codes aus meinem Code-Highlighter-Plugin schleichen sich ab und an Fehler ein.

Direkt zum kompletten Gist springen »

Die perfekte .htaccess, die einzelnen Bereiche

1 – Garantierte HTTP zu HTTPS Umleitung

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTPS} !=on
  RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

Dieser Code sorgt im Gegensatz zu anderen Schnipseln für eine garantierte Weiterleitung aller HTTP-Anfragen auf die HTTPS-Version. In der .htaccess ist dieser Bereich auskommentiert, wenn du den Code nutzen möchtest, entferne die Rauten vor den einzelnen Elementen.

Mehr zum Thema: Garantierte Weiterleitung von HTTP zu HTTPS

2 – CORS aktivieren für bestimmte Dateitypen

Was genau ist CORS?

Cross-Origin Resource Sharing (CORS) ist ein Mechanismus, der Webbrowsern oder auch anderen Webclients Cross-Origin-Requests ermöglicht. … CORS ist ein Kompromiss zugunsten größerer Flexibilität im Internet unter Berücksichtigung möglichst hoher Sicherheitsmaßnahmen.

CORS ist ein wichtiger Beitrag zu einer Sicherheitsstrategie in Verbindung mit einer Content Security Policy. Solltest Du diese Strategie einsetzen, dann ist dieser Teil bereits in meiner Datei enthalten.

<IfModule mod_headers.c>
    <FilesMatch "\.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js|gif|png|jpe?g|svg|svgz|ico|webp)$">
        Header set Access-Control-Allow-Origin "*"
    </FilesMatch>
</IfModule>

Nähere Informationen zur HTTP-Sicherheit:

Dr.Web: HTTP Security-Header: So machst du deine Website sicher

Die perfekte .htaccess für WordPress - PageSpeed und Sicherheit

Eine Website umfasst vieles. Eine perfekte .htaccess gehört dazu.

3 – Dateien komprimieren und cachen

Dieser Bereich ist der umfassendste. Doch jede einzelne Zeile Code ist für die Performance deiner Website wichtig. Jede Dateiart wird komprimiert an den Browser ausgeliefert und in diesem optimal in den Cache aufgenommen. Auch wenn du Plugins wie zum Beispiel Autoptimize und Cache Enabler einsetzt, muss dieser Abschnitt sein, denn er ergänzt diese Plugins für noch mehr Speed.

<IfModule mod_expires.c>
    ExpiresActive on
    ExpiresDefault                                      "access plus 1 month"

  # CSS
    ExpiresByType text/css                              "access plus 1 year"

  # Data interchange
    ExpiresByType application/atom+xml                  "access plus 1 hour"
    ExpiresByType application/rdf+xml                   "access plus 1 hour"
    ExpiresByType application/rss+xml                   "access plus 1 hour"

    ExpiresByType application/json                      "access plus 0 seconds"
    ExpiresByType application/ld+json                   "access plus 0 seconds"
    ExpiresByType application/schema+json               "access plus 0 seconds"
    ExpiresByType application/vnd.geo+json              "access plus 0 seconds"
    ExpiresByType application/xml                       "access plus 0 seconds"
    ExpiresByType text/xml                              "access plus 0 seconds"

  # Favicon (cannot be renamed!) and cursor images
    ExpiresByType image/vnd.microsoft.icon              "access plus 1 week"
    ExpiresByType image/x-icon                          "access plus 1 week"

  # HTML - Behält die Website eine Stunde im Cache, neues wird erst nach Ablauf einer Stunde
  # angezeigt. Wenn nicht gewuenscht, bei 3600 eine Null eintragen
    ExpiresByType text/html                             "access plus 3600 seconds"

  # JavaScript
    ExpiresByType application/javascript                "access plus 1 year"
    ExpiresByType application/x-javascript              "access plus 1 year"
    ExpiresByType text/javascript                       "access plus 1 year"

  # Manifest files
    ExpiresByType application/manifest+json             "access plus 1 week"
    ExpiresByType application/x-web-app-manifest+json   "access plus 0 seconds"
    ExpiresByType text/cache-manifest                   "access plus 0 seconds"

  # Media files
    ExpiresByType audio/ogg                             "access plus 1 month"
    ExpiresByType image/bmp                             "access plus 1 month"
    ExpiresByType image/gif                             "access plus 1 month"
    ExpiresByType image/jpeg                            "access plus 1 month"
    ExpiresByType image/png                             "access plus 1 month"
    ExpiresByType image/svg+xml                         "access plus 1 month"
    ExpiresByType image/webp                            "access plus 1 month"
    ExpiresByType video/mp4                             "access plus 1 month"
    ExpiresByType video/ogg                             "access plus 1 month"
    ExpiresByType video/webm                            "access plus 1 month"

  # Web fonts

    # Embedded OpenType (EOT)
    ExpiresByType application/vnd.ms-fontobject         "access plus 1 month"
    ExpiresByType font/eot                              "access plus 1 month"

    # OpenType
    ExpiresByType font/opentype                         "access plus 1 month"

    # TrueType
    ExpiresByType application/x-font-ttf                "access plus 1 month"

    # Web Open Font Format (WOFF) 1.0
    ExpiresByType application/font-woff                 "access plus 1 month"
    ExpiresByType application/x-font-woff               "access plus 1 month"
    ExpiresByType font/woff                             "access plus 1 month"

    # Web Open Font Format (WOFF) 2.0
    ExpiresByType application/font-woff2                "access plus 1 month"

  # Other
    ExpiresByType text/x-cross-domain-policy            "access plus 1 week"
</IfModule>

<IfModule mod_deflate.c>
# Insert filters / compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/vtt 
AddOutputFilterByType DEFLATE text/x-component
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/js
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE application/atom+xml 
AddOutputFilterByType DEFLATE application/json
AddOutputFilterByType DEFLATE application/ld+json 
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject 
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/font-woff2
AddOutputFilterByType DEFLATE application/x-font-woff
AddOutputFilterByType DEFLATE application/x-web-app-manifest+json font/woff
AddOutputFilterByType DEFLATE font/woff 
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon 

# Exception: Images
SetEnvIfNoCase REQUEST_URI \.(?:gif|jpg|jpeg|png|svg)$ no-gzip dont-vary

# Drop problematic browsers
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</IfModule>

#Alternative caching using Apache's "mod_headers", if it's installed.
#Caching of common files - ENABLED
<IfModule mod_headers.c>
<FilesMatch "\.(ico|pdf|flv|swf|js|css|gif|png|jpg|jpeg|txt)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>
</IfModule>

<IfModule mod_headers.c>
  <FilesMatch "\.(js|css|xml|gz)$">
    Header append Vary Accept-Encoding
  </FilesMatch>
</IfModule>

# Set Keep Alive Header
<IfModule mod_headers.c>
    Header set Connection keep-alive
</IfModule>

# If your server don't support ETags deactivate with "None" (and remove header)
<IfModule mod_expires.c> 
  <IfModule mod_headers.c> 
    Header unset ETag 
  </IfModule> 
  FileETag None 
</IfModule>

<IfModule mod_headers.c>
<FilesMatch ".(js|css|xml|gz|html|woff|woff2|ttf)$">
Header append Vary: Accept-Encoding
</FilesMatch>
</IfModule>

4 – 6G-Firewall gegen die Einschleusung von Schadcode

Dieser Abschnitt sorgt für echte Sicherheit. Immer wieder weisen Plugins und Themes eklatante Sicherheitslücken auf, durch die man Schadcode in eine Website einschleusen könnte. Diese Firewall schiebt dem einen Riegel vor und blockt die gängigen Methoden der Einschleusung.

5 – WordPress-Dateien gegen Zugriff blocken

Dieser Bereich sperrt den Zugriff von außen auf so extrem wichtige und sensible Dateien wie die wp-config.php, die install.php und den sehr gefährdeten wp-includes Ordner.

# No access to the install.php
<files install.php>
Order allow,deny
Deny from all
</files>
 
# No access to the wp-config.php 
<files wp-config.php>
Order allow,deny
Deny from all
</files>
 
# No access to the readme.html
<files readme.html>
 Order Allow,Deny
 Deny from all
 Satisfy all
</Files>
 
# No access to the liesmich.html for DE Edition
<Files liesmich.html>
 Order Allow,Deny
 Deny from all
 Satisfy all
</Files>
 
# No error log access 
<files error_log>
Order allow,deny
Deny from all
</files>

#No access to the .htaccess und .htpasswd
<FilesMatch "(\.htaccess|\.htpasswd)">
  Order deny,allow
  Deny from all
</FilesMatch>

# Block access to includes folder
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

6 – Hotlink Protection gegen Bildklau

Das Hotlinking verhindert, dass Deine Bilder auf anderen Websites verlinkt werden können und somit die Ressourcen Deines Webhostings negativ beeinflussen. Mit diesem Schutz werden Deine Bilder nur dort angezeigt, wo sie es auch sollen. Auf Deiner Website. Du musst nur das Wort »domain« in Zeile 6 gegen Deine Domain tauschen. Bei mir steht dort andreas-hecht.

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{HTTP_REFERER}     !^$
 RewriteCond %{REQUEST_FILENAME} -f
 RewriteCond %{REQUEST_FILENAME} \.(gif|jpe?g?|png)$           [NC]
 RewriteCond %{HTTP_REFERER}     !^https?://([^.]+\.)?domain\. [NC]
 RewriteRule \.(gif|jpe?g?|png)$                             - [F,NC,L]
</ifModule>

7 – Schütze Deinen Adminbereich mittels HTTP-Veriegelung

Mit der Kombination aus .htaccess und .htpasswd erzeugst Du einen sehr wirksamen Schutz gegen das Hacking Deines Adminbereichs. Du musst nur den Pfad zu Deiner .htpasswd anpassen.

# If you want to use it, comment it out and set your path to .htpasswd
#<Files wp-login.php>
#AuthName "Admin-Bereich"
#AuthType Basic
#AuthUserFile /usr/local/www/apache24/your-path/your-domain.com/.htpasswd 
#require valid-user
#</Files>

8 – Die XML-RPC Datei sperren

Die XML-RPC Datei ist zusammen mit dem Adminbereich von WordPress das beliebteste Angriffsziel.

Die Schnittstelle ist ein nützliches Werkzeug für die Verwaltung von Inhalten. Sie dient dazu, dass man mittels der Desktop– und der Smartphone-Apps die Website verwalten und Artikel verfassen kann. Ebenso kümmert sie sich um Pingbacks. Die Pingback-API ermöglicht eine Art »Vernetzung« zwischen den Blogs und dient gleichzeitig als Schnittstelle, um WordPress über externe Programmen verwalten zu können.

Genau diese Funktionen sorgen für teilweise wesentlich heftigere Angriffsorgien als auf den Adminbereich selbst. Denn auch über die Schnittstelle haben Angreifer dann vollen Zugriff auf die Website.

### @see https://digwp.com/2009/06/xmlrpc-php-security/

#<Files xmlrpc.php>
# Order Deny,Allow
# Deny from all
#</Files>

Mehr zum Thema: WordPress-Sicherheit: Die XML-RPC-Schnittstelle abschalten

9 – Die HTTP-Security-Header

Jedes Mal, wenn ein Browser eine Seite von einem Webserver anfordert, antwortet der Server mit der Auslieferung der Seite und sendet einen HTTP-Response-Header mit dem Inhalt. Diese Header können nicht nur alltägliche Dinge wie den Zeichensatz enthalten, sondern auch sicherheitsrelevante Einstellungen senden.

Hierfür nutzt man die sogenannten HTTP-Response-Header, mit denen man das Verhalten eines Browsers steuern kann. Ein Strict-Transport-Security-Header würde dem Browser zum Beispiel die Anweisung erteilen, nur über HTTPS zu kommunizieren.

## X-FRAME-OPTIONS-Header
<IfModule mod_headers.c>
    Header set X-Frame-Options "sameorigin"
</IfModule>

## X-XSS-PROTECTION-Header
<IfModule mod_headers.c>
    Header set X-XSS-Protection "1; mode=block"
</IfModule>

## X-Content-Type-Options-Header
<IfModule mod_headers.c>
    Header set X-Content-Type-Options "nosniff"
</IfModule>

## Strict-Transport-Security-Header - Nur HTTPS Websites, auskommentieren zur Nutzung
#<IfModule mod_headers.c>
#    Header set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
#</IfModule>

Mehr zum Thema: HTTP Security-Header: So machst du deine Website sicher

10 – Die WordPress Standard Regeln

Dies sind die Standard-Regeln, die jede WordPress-Website während der Installation anlegt. Wenn Du eine Multisite nutzt, oder sich dein WordPress in einem Unterordner befindet, müssen diese Regeln angepasst werden.

# 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

Die komplette .htaccess als Gist

ist WordPress-Entwickler und bietet dir WordPress Sicherheit Service und WordPress Performance Service für deine Website. Außerdem ist er Spezialist für Onpage SEO und bringt Deine Website in die Top-Suchergebnisse von Google.

38 Kommentare zu “Die perfekte .htaccess für WordPress – PageSpeed und Sicherheit [2018]

  • Hallo Andreas,
    ich danke für die Neuerungen der perfekten .htaccess für WordPress. Schon vorher habe ich deine Snippets verwendet, die auf Dr.Web publiziert wurden. Was ich bisher nicht in der .htaccess hatte, waren die CORS, XML-RPC und die HTTP Security Header. Gerade habe ich die .htaccess angepasst und alles läuft einwandfrei. Dann auch noch ein dickes DANKE für dein E-Book WordPress Performance. Das habe ich im April gekauft, aber leider konnte ich aus Zeitmangel noch nicht alles umsetzen/testen.

    Viele Grüße
    Guido

  • Hallo Andreas,

    also nachdem ich deine htaccess komplett 1zu1 übernommen habe, in der Hoffnung keine Plugins mehr fürs Caching und Security zu benötigen, war weder mein Back, noch mein Frontend erreichbar..?!
    Es hieß dann immer „Umleitungsfehler“…

    Grüße,
    Daniel

    • Update: Ich habe alle Bereiche einzeln hinzugefügt und es liegt tatsächlich an Punkt 1 und Punkt 4.

      Füge ich die garantierte Umleitung hinzu, sagt er mir „unendliche Umleitung“.

      Füge ich die 6g Firewall hinzu, sagt er mir „no permission“

      • Hi Daniel,

        danke für Deine wichtige Info! Die Umleitung läuft mit allen Servern, allerdings nur, wenn keine andere Umleitung der Domain aktiv ist. Das Problem hatte ich auch vor kurzem. Ich werde also die .htaccess etwas überarbeiten und einen Kommentar hinzufügen. Das die 6G-Firewall nicht funktioniert, höre ich jedoch zum ersten Mal. Da ist dann eine Direktive des Hosters aktiv, denn für die Firewall sagt er Dir einfach nur: Keine Berechtigung.

  • Hallo,
    vielen Dank für die Arbeit und das Teilen.
    Allerdings fehlt mir ein wichtiger Hinweis zu Punkt 4, der 6G-Firewall.
    Da diese mir den Zugriff auf den WP Login verweigerte, habe ich etwas recherchiert und herausgefunden, dass der Code angeblich vor den WordPress eigenen Anweisungen (# BEGINN WORDPRESS … # END WORDPRESS) einzufügen ist.
    Doch auch dies brachte mir den Login nicht wieder, weshalb ich folgenden Code verwendet habe:
    https://lars-mielke.de/6067/umfassender-webseitenschutz-mit-der-6g-firewall-fuer-htaccess/
    Damit lief dann wieder alles.
    Lieben Gruß,

    -Björn

    • Hallo Ralf,

      danke für die Blumen. Ich hatte mir Ranking-Vorteile von der Permalink-ID versprochen, da Google inzwischen auch fast nur noch IDs nutzt. Allerdings sind die Vorteile nicht wirklich groß.

  • Die Zeile ‚RedirectMatch 403 (?i)/(\$(\&)?|\*|\“|\.|,|&|&?)/?$‘ aus dem Bereich Request Strings der Firewall sorgt bei mir für ein ‚Forbidden You don’t have permission to access / on this server.‘

    Woran kann das liegen? Und wie – außer dem Auskommentieren – könnte man das evtl. beheben?

  • Hallo Andreas,
    eine ganz tolle Arbeit. Habe alles übernommen nur
    Protect your WordPress Login with HTTP Authentification und
    Ultimate hotlink protection auskommentiert, letzeres weil ich nicht weiß wie ich die Webadresse eingeben muss 🙁
    Es funktioniert alles wunderbar, nur die Google Reklame die ich im Header und Footer untergebracht habe werden nicht angezeigt.
    Vielleicht kannst Du mir sagen an was es liegen könnte.
    Gruß Helmut

    • Hallo Helmut,

      die Hotlink-Protection ist einfach. In Zeile 6 findest Du das Wort »domain«, das tauscht Du aus gegen Deine Domain. Ich hatte das dort genau beschrieben, was da bei mir steht. Die Google-Reklame könnte entweder an CORS oder an den Security Headern liegen. Kommentiere es einfach nach und nach mal aus…

    • Hallo Andreas,
      vielen Dank für die schnelle Antwort. Habe die htaccess in drei Blogs eingebaut und war ganz happy.
      Inzwischen hat sich ein Problem eingestellt. Meinen Blog schreibe ich mit Blogdesk. Heute konnte ich den letzten Bericht nich hochladen, es wurde ein 403 Fehler gemeldet.
      Hatte die komplette htaccess übernommen, nur Ultimate hotlink protection war deaktiviert.
      Jetzt habe ich nur noch The original WordPress Rewrite Rules in Betrieb und das Hochladen funktioniert wieder. Es wäre schön wenn Du mir einen Tip geben könntest an was es liegen könnte.

      Gruß Helmut

      • Hallo Helmut,

        das wird am dem Bereich »XML-RPC« liegen. Da das ein Sicherheitsrisiko ist, funktionieren die Anwendungen dieser Art nicht mehr. Schreibe also die Artikel entweder direkt in WordPress oder kommentiere den Bereich aus.

        • Hallo Andreas,
          vielen Dank für die schnelle Antwort, das war es. Habe XML-RPC auskommentiert.
          Mit WordPress direkt schreiben ist so eine Sache, bin halt Blogdesk gewöhnt. In meinem Blog sind immer sehr viele Bilder und ich bilde mir ein das ich das mit Blogdesk besser erledigen kann. Werde aber wieder einmal einen Versuch mit WordPress machen.

          Vielen Dank für deine Mühe
          Helmut

  • Hallo Andreas,
    vor kurzem habe ich mir den Adminbereich mittels HTTP-Veriegelung per .htaccess und .htpasswd geschützt. Es funktioniert bestens, nur können aber meine „normalen“ Besucher PW-geschützte Seiten nicht mehr betreten, weil sie jetzt auch das vorgeschaltene Eingabeformular für die HTTP-Veriegelung sehen. Habe ich etwas vergessen?

    Im voraud danke für die schnelle AW.

    LG, Bildermann

      • @ Andreas

        Danke für die schnelle AW.

        […] …sollten normale User auf Passwortgeschützte Bereiche zugreifen können […]
        Leider ist das nicht der Fall, sondern wie von mir oben beschrieben. Könnte es eventuell an der Serverkonfiguration meines Providers liegen?

        Hier mal probehalber eine mit dem „supersicherem“ PW

        Test

        gesicherte Testseite zur Illustration: https://bildermann.de/test/

        LG, Bildermann

  • @ Adreas
    […] Dann solltest Du meinen Tipp mit SecSign mal ausprobieren. […]
    Danke. Gibt es denn als Abhilfe kein code-snippet? Dazu hatte ich bisher die ursprünglich von Sergej Müller entwickelte Zwei-Faktor-Authentifizierung „2-Step-Verification-master“ verwendet, welche ohne einem Smartphone auskommt und ein fünf Minuten gültiges PW an die bei der Registrierung hinterlegte E-Mailadresse sendet.

    LG, Bildermann
    Tipp: „2-Step-Verification-master“ liegt auf GitHub zum Herunterladen…

  • Hallo Andreas, leider funktioniert noch immer nicht alles. Wenn ich einen der letzten Beiträge anklicke, kommt Error 404 Datei oder Verzeichnis nicht gefunden. The requested URL was not found.
    Auf zwei meiner Seiten passiert das. Bin Sicher das Du weißt an was das liegen könnte.
    Gruß Helmut

    • Hi,

      also erstens: die .htaccess aus dem Gist unten verwenden, nicht aus den Code-Snippets. Zweitens: keine anderen Teile in der .htaccess verwenden außer denen, die drin sind. Und zwar solange, bis es funktioniert. Drittens: Gehe zu »Einstellungen => Permalinks« und speichere Deine Permalinks so wie sie sind nochmals ab. <= WICHTIG! Funktioniert es immer noch nicht, stimmt mit der Serverkonfiguration etwas nicht. Die .htaccess läuft problemlos auf über hundert Websites.

      • Hallo Andreas,
        vielen Dank für deine Mühe und Geduld. Das ich immer so spät antworte liegt an der Zeitverschiebung, ich lebe in Thailand. Jetzt funktioniert es, vielleicht hat das Speicher der Permalinks geholfen, es kann aber sein das der Provider gerade an dem Server was gemacht hat. Ich habe von Anfang an die htaccess aus dem Gist benutzt und auch nichts anderes eingefügt.
        Gruß Helmut

  • Hi Andreas,

    echt klasse Sache, dass du hier eine sichere und gut durchdachte .htaccess bereitstellst.
    Nach Übernahme deiner Vorlage und entsprechenden Anpassungen (Domain, auch die Permalink Struktur Anpassung) funktionieren leider meine Bilder nicht mehr, also all die *.jpg, *.png,…werden nicht angezeigt.
    So wie ich das sehe, versucht der Server nun, diese auch „gesichert“ also per https zu übertragen, was scheinbar nicht funktioniert.
    Kannst Du mir ggf. weiterhelfen? Vielen Dank im Voraus!

    Grüße
    Alex

    • Hi Alex,

      das kann meiner Meinung nach nur mit dem Block »Ultimate Hotlink Protection« zu tun haben. Kommentiere den einfach mal aus und schau, was passiert. Wenn es funktioniert, muss im Code https gegen http ausgetauscht werden. Und bitte: nimm den Code nur aus dem Gist, mein Plugin scheint etwas bei der Anzeige des Codes zu ändern.

      • Hi Andreas,

        danke für den Hinweis mit dem Block, das war der richtige Anstoß.
        Der Fehler lag allerdings auf meiner Seite, ich hatte aus Gewohnheit die Domain mit TLD Qualifier eingetragen und dann hat es nicht geklappt, ohne dann schon 😉
        Nun klappt der Aufruf der Seite super schnell und dazu noch gut gesichert, klasse, vielen Dank und weiter so!!!

  • Hilfe. Hallo Andreas ich bin es schon wieder.
    Ich möchte gern Ultimate hotlink protection aktivieren komme aber mit der Eingabe der Domain nicht zurecht. Habe alle möglichen Versionen probiert, entweder werden keine Bilder im Blog angezeigt oder man kann sie wie bisher kopieren.
    Könntest Du mir freundlicherweise hier !^https?://([^.]+\.)?domain\. [NC] eine normale domain ohne www eintragen?
    Für deine Mühe bedanke ich mich im Voraus
    Gruß Helmut

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.