Da gerade im Beitrag Weiterleitung von HTTP nach HTTPS in den Kommentaren die Frage für das Erzwingen eines Slashs am Ende der URL auf kam, hier eine Lösung für dieses Problem.
Worum geht es? Bei WordPress und anderen Website-Lösungen kann es vorkommen, dass eine Inhaltsseite mit und ohne Slash am Ende vom System erzeugt wird.
https://meine-url.de/beispielseite/
https://meine-url.de/beispielseite//
Das ist nicht unbedingt schön, da es sich hierbei prinzipiell um zwei unterschiedliche Seiten handeln könnte und Google dies unter auch Umständen so bewertet. Demnach sollte für ein ordentliches SEO an dieser Stelle auch dafür gesorgt werden, dass es genau nur eine Schreibweise einer URL gibt. Im Ryte-Wiki wird auf diese Trailing Slash Problematik näher eingegangen.
Auch hierfür gibt es ein paar Zeilen Weiterleitungs-Code für die .htaccess-Datei:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # Keine doppelten Slashes am Ende einer URL RewriteCond %{THE_REQUEST} ^[A-Z]+\ /(([^/\ ]+/)*)/+([^\ ]*) RewriteRule ^ /%1%3 [L,R=301] # Abschließenden Slash an URL erzwingen RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$ RewriteCond %{REQUEST_URI} !^/wp-json RewriteRule ^(.*)$ https://meine-url.de/$1/ [L,R=301] </IfModule>
Kopiert diesen Block in den vorderen Bereich eurer .htaccess-Datei. Nach eventuell vorhanden Weiterleitungen von http zu https und nicht www zu www bzw. umgekehrt. Je nachdem, ob und was ihr hier bei euch eingestellt habt. Zumindest sollte dieser Code vor den Einstellungen rund um das Caching, der Komprimierung usw. und auf jeden Fall vor dem #BEGIN WordPress-Block stehen.
Die Zeilen 10 bis 13 hatte ich bei meinen Seiten mit Contact Form 7 (CF7) bis vor gar nicht langer Zeit wie folgt in den .haccess-Dateien eingetragen:
RewriteCond %{REQUEST_URI} ^/[^\.]+[^/]$ RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]
Da dies aber beim Absenden des Formulars mit CF7 zu einem 404-Fehler führte, erfolgte irgendwann die oben genannte Anpassung. In dieser wird letztendlich nur /wp-json von diesem Redirect ausgeschlossen.
Danke! Bin fast schon verzweifelt an meinen Contactform7 Einstellungen. Mit deinen htaccess zum abschließenden Slash funktioniert nun auch wieder der Versand über CF7.
Vielen Dank. Das hat jetzt wunderbar geklappt. Allerdings würde ich noch etwas hinzufügen um den Code zu perfektionieren.
RewriteEngine On
RewriteBase /
# Keine doppelten Slashes am Ende einer URL
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /(([^/\ ]+/)*)/+([^\ ]*)
RewriteRule ^ /%1%3 [L,R=301]
# Abschließenden Slash an URL erzwingen
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteCond %{REQUEST_URI} !^/wp-json
# Das www. am Anfang weg
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
# Ausschließlich nur über https://
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
Gruß Stephan