Zur Navigation

htaccess entrümpeln und korrigieren ...

1 lizzy

Hallo geschätztes Forum,

weil mir hier schon so häufig und vor allem kompetent hinsichtlich meiner Fragen zur htaccess-Umsetzung geholfen wurde, bin ich seit langer Zeit mal wieder hier. Schön, dass es dieses tolle Forum noch gibt!!!

Aktuell habe ich folgendes Problem: Auf der Seite eines Freundes sorgt die htaccess, so glaube ich, für ziemlich viel Durcheinander und auch nicht zielführende Anweisungen.

So habe ich festgestellt, dass der Aufruf von:

https://www.domain.de/hier-kann-stehen-was-will

immer auf die Startseite der HP geleitet wird (und somit keinen 404 ausgibt). Das ist nicht gut, denke ich. Einzige Ausnahme bildet wohl der Aufruf der
https://www.domain.de/index.php --> die wird dann auch so angezeigt und vom VerzeichnisXY (siehe Code)

Bevorzugt/gewünscht ist die URL-Variante:
https://www.domain.de
Es scheint so, dass auch alle anderen Varianten (http sowie auch ohne www.) dorthin korrekt umleiten - bis auf die beiden Ausnahmen und eben diesen Fehler mit der Fantasie-URL.

In der htaccess habe ich u.a. folgende Zeilen (in dieser Reihenfolge) ausfindig gemacht, die dafür verantwortlich sein müssten:


RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ http://www.domain.de/$1 [R=301,L]

RewriteCond %{HTTP_HOST} !^www\.domain\.de
RewriteRule ^(.*)$ https://www.domain.de/$1 [R=301,L]

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !/VerzeichnisXY.*
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteRule ^((urllist|sitemap_).*\.(xml|txt)(\.gz)?)$ includes/sitemap.php?datei=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^. index.php [L]

Wenn ich als Laie das richtig einschätze, widersprechen sich da einige Sachen oder sind nicht korrekt umgesetzt. Kann hier jemand weiterhelfen und entrümpeln ...?

Vielen Dank für Eure Hilfe!

22.04.2016 12:53 | geändert: 22.04.2016 13:19

2 Jörg

Der erste Block sorgt dafür, dass bei URLs, die nicht auf ein reales Verzeichnis zeigen, der schließende Slash entfernt wird. Da sollte man natürlich auch gleich auf die https Variante weiterleiten:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ https://www.domain.de/$1 [R=301,L]

Der zweite Block sorgt für eine Weiterleitung auf die Standard-Domain.

Der dritte Block sorgt für die Weiterleitung nach https, mit Ausnahme des Verzeichnisses /VerzeichnisXY

Der letzte Block beinhaltet Rewrites für die Sitemap und für das CMS (WordPress?)

Die Frage ist noch, was für ein URL-Schema im CMS definiert ist. Bei WordPress z.B. enden die URLs häufig auf einen Slash, da wäre der erste Regelblock wohl kontraproduktiv

Weiter zusammenfassen bräucht man da denke ich nichts - ich würde vielleicht noch Kommentare einfügen, welche Blöcke wofür sind

So habe ich festgestellt, dass der Aufruf von:

https://www.domain.de/hier-kann-stehen-was-will

immer auf die Startseite der HP geleitet wird (und somit keinen 404 ausgibt). Das ist nicht gut, denke ich.

Bei den oben genannten Regeln sehe ich keinen Verursacher für diese Weiterleitung. Könnte sein, dass das CMS hierfür verantwortlich ist? denn dieses greift mit dem letzten Regelblock alle übrigen URLs ab.

22.04.2016 14:42

3 lizzy

Hey Jörg,

vielen Dank für Deine Antwort!

Ich muss dann wohl nochmal genauer schauen ...

Eine kurze Nachfrage noch hinsichtlich des Auskommentierens in der htaccess:

Ist eigentlich ein Leerzeichen zwischen Raute und Anweisung erforderlich?
Machte es also einen Unterschied ob es heißt:

#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_URI} ^(.+)/$
#RewriteRule ^(.+)/$ https://www.domain.de/$1 [R=301,L]

oder

# RewriteCond %{REQUEST_FILENAME} !-d
# RewriteCond %{REQUEST_URI} ^(.+)/$
# RewriteRule ^(.+)/$ https://www.domain.de/$1 [R=301,L]

Ich habe den Eindruck, dass Auskommentierungen ohne Leerzeichen nicht beachtet werden und die Anweisungen somit ausgeführt werden ...

22.04.2016 15:55

4 Jörg

Das Kommentarzeichen "#" muss in einer .htaccess Datei das erste (Nonspace-)Zeichen in einer Zeile sein, weitere Einschränkungen gibt es da nicht.

22.04.2016 16:21

Beitrag schreiben (als Gast)





[BBCode-Hilfe]