Bitte um Durchsicht meiner htaccess Datei
-
Moin,
ich könnte einmal etwas Hilfe gebrauchen. So hab ich mein Internetblog mit viel Mühe selber auf HTPPS umgestellt. Vor kurzem war es aber noch so, daß die Seite 25u.de erst Mal unverschlüsselt ausgeliefert wurde. Wenn man nach dem ersten Aufruf auf irgend einen Blog Artikel geclickt hat war dieser aber verschlüsselt. 80% Sieg.
Ich hab in WordPress keine Möglichkeit gefunden, das irgendwie zu beeinflussen. Es ist überhaupt ziemlich deprimierend, wie kompliziert so ein Blog für ganz normale Leute ohne technischen (programmiertechnischen) Hintergrund zu betreiben ist …
Aktuell sieht meine htaccess Datei so aus:
# BEGIN WordPress # Die Anweisungen (Zeilen) zwischen „BEGIN WordPress“ und „END WordPress“ sind # dynamisch generiert und sollten nur über WordPress-Filter geändert werden. # Alle Änderungen an den Anweisungen zwischen diesen Markierungen werden überschrieben. <IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] RewriteEngine On RewriteCond %{Server_Port} !=443 RewriteRule ^(.*)$ https://25u.de/$1 [R=301,L] <IfModule> # END WordPress
Der untere Block ist neu. Der hat bewirkt, daß 25u.de sofort auf https://25u.de umschaltet. Wahrscheinlich hätte der untere Block ganz nach unten gemusst, unter dieses END WordPress. Denn jetzt ist folgendes passiert: Ich hab Nachts meine Seite editiert, plötzlich war diese offline und es kam nur eine Strato applocked Fehler Meldungs Seite. Am nächsten Tag (nicht wie versprochen nach wenigen Minuten) war mein Internetblog wieder da, allerdings wieder unverschlüsselt. Also htacess wieder hochgeladen und siehe da, repariert.
Meine Bitte wäre nun, sich meine htaccess Datei Mal anzuschauen. Wie sollte die aussehen ? Was ist dort unnötig ? Welche zeilen kann ich löschen ? Muss was dazu ?
Bevor ich hier weiter herum murkse. Das ist ja vermutlich alles nicht für Narrenhände bestimmt.
Die Seite, für die ich Hilfe brauche: [Anmelden, um den Link zu sehen]
-
Die Umstellung einer Website von unverschlüsselter Übertragung per
http
aufhttps
ist inzwischen eigentlich recht simpel: Du brauchst nur unter Werkzeuge > Website-Zustand der Anleitung zu folgen.Bevor es diese Möglichkeit gab, war die Einstellung etwas komplizierter: Nachdem ein SSL-Zertifikat eingerichtet wurde, musst unter Einstellungen > Allgemein die beiden URLs auf
https
geändert werden. Zusätzlich war eine Ersetzung in allen Datenbank-Tabellen notwendig, damit die Website keine gemischten Inhalte überträgt. Das lässt sich mit dem hier im Forum oft empfohlenen Plugin Better Search Replace leicht umsetzen.Ganz unabhängig davon ist es sinnvoll, eine Weiterleitung einzurichten, die alle Besucher, die eine URL mit
http
aufrufen, automatisch auf eine verschlüsselte Webseite umleiten. Wer seine Website ohne die Subdomainwww
betreibt, möchte auch gerne Besucher auf eine URL umleiten, die keinwww
enthält. Beides lässt sich durch eine Weiterleitungsregel in der.htaccess
einrichten, z.B. …RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] RewriteCond %{ENV:HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Diese Zeilen müssen oberhalb des von WordPress eingefügten Code-Blocks eingefügt werden. Dieser Block, der mit
# BEGIN WordPress
anfängt und mit# END WordPress
endet, sorgt dafür, dass jeder Seiteaufruf an dieindex.php
weitergeleitet wird, um dann Skripte auszuführen, die den Seitenaufruf in den richtigen Aufruf in der MySQL-Datenbank umwandeln. Unter diesem Block eingetragene Zeilen werden ggf. inoriert, weil die Seite schon angezeigt wird.Zusätzlich sind oberhalb des von WordPress eingetragenen Code-Block noch ein paar Regeln sinnvoll (aber für den Betrieb nicht zwingend erforderlich), um die Sicherheit der Website zu verbessern. Mit
<FilesMatch "^.*(error_log|wp-config\.php|php.ini|\.[hH][tT][aApP].*)$"> Order deny,allow Deny from all </FilesMatch>
lässt sich z.B. der Zugriff auf die Konfigurationsdatei
wp-config.php
(in der die Zugangsdaten zur MySQL-Datenbank stehen!) zusätzlich absichern. Auch der Browser-Zugriff auf Error-Logs, PHP-Konfiguration und die.htaccess
selber wird erschwert.Mit
<files readme.txt> order allow,deny deny from all </files> <files readme.html> order allow,deny deny from all </files>
wird zusätzlich der Zugriff auf Readme-Dateien unterbunden, aus denen Angreifer die Versionsnummer von Plugins auslesen könnten.
Die XMLRPC-Schnittstelle, über die mit Software von Drittanbietern auf WordPress zugegriffen werden kann, wird gerne für Angriffe genutzt. Wenn du keinen externen Editor verwendest, um Beiträge zu schreiben, solltest du den Zugriff ebenfalls sperren:
<Files xmlrpc.php> Order Deny,Allow Deny from all </Files>
Zur Verbesserung der Performance können in der
.htaccess
Vorgaben gemacht werden, ab im Browser-Cache Dokumente neu geladen werden sollen („Expires“) und welche Dateien komprimiert übertragen werden sollen („mod_deflate“). Diese Einträge werden allerding üblicherweise von einem Cache-Plugin eingetragen und du brauchst nichts selber hinzufügen. Allerdings kannst du das nach der Installation eines Cache-Plugins selber prüfen und ggf. nachtragen, z.B.# Serve resources with far-future expires headers. # # (!) If you don't control versioning with filename-based # cache busting, you should consider lowering the cache times # to something like one week. # # https://httpd.apache.org/docs/current/mod/mod_expires.html <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 0 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 year" ExpiresByType image/bmp "access plus 1 year" ExpiresByType image/gif "access plus 1 year" ExpiresByType image/jpeg "access plus 1 year" ExpiresByType image/png "access plus 1 year" ExpiresByType image/svg+xml "access plus 1 year" ExpiresByType image/webp "access plus 1 year" ExpiresByType video/mp4 "access plus 1 year" ExpiresByType video/ogg "access plus 1 year" ExpiresByType video/webm "access plus 1 year" # Web fonts # Embedded OpenType (EOT) ExpiresByType application/vnd.ms-fontobject "access plus 1 year" ExpiresByType font/eot "access plus 1 year" # OpenType ExpiresByType font/opentype "access plus 1 year" # TrueType ExpiresByType application/x-font-ttf "access plus 1 year" # Web Open Font Format (WOFF) 1.0 ExpiresByType application/font-woff "access plus 1 year" ExpiresByType application/x-font-woff "access plus 1 year" ExpiresByType font/woff "access plus 1 year" # Web Open Font Format (WOFF) 2.0 ExpiresByType application/font-woff2 "access plus 1 year" # 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|woff2|woff)$"> Header set Cache-Control "max-age=31536000, 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>
Wir bekommen hier öfters Fragen von WordPress-Anwendern, die ihre Website- und WordPress-URL auf
https
umgestellt haben, ohne vorher ein SSL-Zertifikat eingerichtet zu haben. Das führt dann zu Problemen, die sich ein wenig umständlicher lösen lassen, in dem der Eintrag in der Datenbank korrigiert wirdf (Tabellewp_options
) oder nachträglich ein SSL-Zertfikat eingerichtet wird.Es gibt viele Beiträge im Web, die sich mit möglichen Einträgen in der
.htaccess
befassen und nicht selten eine recht lange.htaccess
-Datei zur Folge haben (z.B. WordPress htaccess: perfekt für PageSpeed und Sicherheit – hier stammt auch das zuletzt aufgeführte Code-Snippet her, Complete list of .htaccess snippets to improve WordPress security). Unter Umständen kann eine per Coipy/Paste gepimpte.htaccess
zu einem „500 – Internal Server Error“ führen, weil sich die Konfiguration des Webservers mit der.htaccess
beißt. Das lässt sich aber schnell beheben, wenn die Datei per FTP korrigiert werden kann. Hier löscht man zunächst alle zuletzt eingefügten Einträge in der.htaccess
und fügt sie dann einzeln ein, um im Ausschlußprinzip zu testen, welche Regel sich nicht mit der Serverkonfiguration verträgt.Bego, danke erst Mal für deine ausführlich Antwort.
Das SSL Zertifikat hatte ich zuerst installiert, das hat auch soweit funktioniert und auf Wunsch wurde die webseite verschlüsselt ausgeliefert. Aber der Aufruf von 25u.de war nach wie vor unverschlüsselt.
Der Anleitung folgen hat meiner Erinnerung nach damals auch schon nicht funktioniert. Ich hatte es eigentlich erwartet, denn ich bin ja nicht der einzige der den Wunsch hat seine Seite auf HTTPS umzustellen. HTTPS ja, aber nur, wenn man HTTPS eintippt.
Ich hab jetzt Mal deine Zeilen oberhalb vom Block angefügt, das hat dazu geführt daß die Seite gar nicht mehr geladen wird.
Es kommt dann ein too many request error.
Also, was mir sehr helfen würde wäre jemand, der sich die Datai unten Mal anschaut und das umprogrammiert. Mit Trial and Error irgendwas einfügen, ich denke, das Ergebnis ist einfach zu sehr vom Zufall abhängig.
FRAGE 1: welche Zeilen muss ich einfügen, damit der Aufruf von 25u.de oder http://www.25u.de automatisch (zum Beispiel bei Leuten mit einem Handy, die kein https:// eintippen können, sondern nur 25u.de ) verschlüsselt ausgeliefert wird ?
FRAGE 2: welche Zeilen müssen eventuell gelöscht werden weil was doppelt ist ?
Ich mein, da steht ja nun an mehreren Stellen was mit HTTPS oder request oder was weis ich was das macht. Da unten im schmierigen Betriebsraum von diesem Ding.
———————————– hat zu to many requests geführt ——————-
RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] RewriteCond %{ENV:HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] # BEGIN WordPress # Die Anweisungen (Zeilen) zwischen „BEGIN WordPress“ und „END WordPress“ sind # dynamisch generiert und sollten nur über WordPress-Filter geändert werden. # Alle Änderungen an den Anweisungen zwischen diesen Markierungen werden überschrieben. <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
Du könntest mal im Control-Panel deines Webspaces nachsehen, ob du das nicht dort einstellen kannst. Bei Plesk ist das z.B. kein Problem.
Bei mir ist das Strato. Plesk oder so seh ich da nicht. Am Provider kann es meiner Meinung nach auch nicht liegen. Da ist irgend was falsch da oben mit den hinzugefügten Zeilen. Offensichtlich. Denn dann gehts ja nicht mehr.
Als Nachtrag: tips zur Performance Verbesserung brauch ich nicht, auch wenn das sicherlich lieb gemeint ist und vielleicht Mal jemanden hilft.
- Diese Antwort wurde geändert vor 2 Jahren, 5 Monaten von winterstern.
- Diese Antwort wurde geändert vor 2 Jahren, 5 Monaten von winterstern.
Was hat das mit Performance zu tun? In Plesk kann ich einstellen, dass die Domain immer auf https umgeleitet wird, und darum geht es doch! Und soweit ich weiß, kann das nicht nur Plesk, somit hättest du das Gehampel mit der htaccess nicht.
Strato hat doch eigentlich Plesk zur Domain-Verwaltung.
Ich guck mir das heut Abend an ! Fahr nun erst Mal wieder ne Runde LKW, offroad, um runter zu kommen von diesem webseiten Stress.
welche Zeilen muss ich einfügen, damit der Aufruf von 25u.de oder http://www.25u.de automatisch (zum Beispiel bei Leuten mit einem Handy, die kein https:// eintippen können, sondern nur 25u.de ) verschlüsselt ausgeliefert wird ?
RewriteEngine on RewriteCond %{ENV:HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
FRAGE 2: welche Zeilen müssen eventuell gelöscht werden weil was doppelt ist ?
<IfModule mod_rewrite.c> RewriteEngine On ❌ RewriteCond %{HTTPS} !=on ❌ ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase /
Die mit ❌ markierten Zeilen gehören da nicht hin.
Nee sorry da kommt dann:
This page isn’t working25u.de redirected you too many times.
Try clearing your cookies.
ERR_TOO_MANY_REDIRECTSDatei Inhalt, umgebaut:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]# BEGIN WordPress
# Die Anweisungen (Zeilen) zwischen „BEGIN WordPress“ und „END WordPress“ sind
# dynamisch generiert und sollten nur über WordPress-Filter geändert werden.
# Alle Änderungen an den Anweisungen zwischen diesen Markierungen werden überschrieben.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]# END WordPress
Ich hab mich gerade auf die Suche nach Plesk begeben. Das ist etwas, wenn man einen Server gekauft hat.
https://www.strato.de/faq/server/erste-schritte-mit-plesk/
Bei mir wird das unter strato nicht angezeigt.
Irgend ein Control-Panel wirst du doch bei deinem Webspace haben. Wo kannst du z.B. die PHP-Version einstellen?
Wenn ich mich bei Strato einlogg ist da links ein Kasten mit WP Starter. Da kann man dann ihr Paket, Domains, EMail und so weiter auswählen. Unter Datenbank ist dann PHP einstellen, bei mir 8.
Nix mit Plesk, das scheint wie schon gesagt dafür zu sein, wenn man dort einen Hardware Server hat.
Ich hab jetzt gerade Mal Strato angeschrieben, vielleicht haben die ja noch eine Idee, was da zu ändern ist ohne daß man immer gleich alles zerschiesst. Falls mir strato helfen kann, poste ich die Lösung dann hier.
Du hast vermutlich ein WordPress-Paket bei Strato, da kann das sein, dass du nicht viel einstellen kannst. Schade, ansonsten wäre die Lösung einfach gewesen.
Korrekt, allerdings ist es mit 4 Euro pro Monat (48 Euro im Jahr) spektakulär günstig und es macht seit zwei Jahren Zeit genau das, was es soll. Mehr Funktionen als Blog + eMail benötige ich nicht.
Keine, der sich der Datai da oben nochmal annehmen will ? So wie es da oben steht und vorgeschlagen wurde geht es nicht. Fehlermeldung.
Korrekt, allerdings ist es mit 4 Euro pro Monat (48 Euro im Jahr) spektakulär günstig
Der Preis ist nicht spektakulär. Auch andere Hoster können dir so ein (sogar leistungsfähigeres) Paket zu dem Preis anbieten.
Keine, der sich der Datai da oben nochmal annehmen will ? So wie es da oben steht und vorgeschlagen wurde geht es nicht. Fehlermeldung.
Bitte kein Bumping (siehe FAQ) – wenn hier sich niemand dazu geäußert hat, dann liegt es in der Regel daran, dass niemand z. Zt. noch etwas zu dem Problem beisteuern kann.
An sich sollten die genannten Antworten reichen, um das Problem zu beheben.
- Das Thema „Bitte um Durchsicht meiner htaccess Datei“ ist für neue Antworten geschlossen.