Seite 1 von 1

Domain auf (fast) unendlich verschiedene Arten aufrufbar

Verfasst: 10.03.2009, 23:14
von turnschuh
Hallo,
bin von einem Checkertool gewarnt worden, dass meine Domain auf verschiedene Weise aufrufbar ist, und dies möglicherweise ein DC-Problem darstellt.

domainname.tld/
domainname.tld//
domainname.tld///
u.s.w.

und
domainname.tld/index.html
domainname.tld//index.html
domainname.tld///index.html
u.s.w.


Meine .htaccess sieht so aus:

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

Was mache ich da falsch? :(

Verfasst:
von

Verfasst: 11.03.2009, 08:34
von Nullpointer
Der Code sieht doch eigentlich gut aus. Stimmt es denn, was das Tool meldet?
Wo kommst Du hin, wenn Du diese URLs aufrust? Du kannst auch mit Firefox Plugins einfach den Response Code anzeigen lassen. Bei den Umleitungen, sollte dort ein 301 redirect angezeigt werden.

Wenn die Umleitungen nicht funktionieren sollten, wird die .htaccess evtl. ignoriert, was am Webspace liegen könnte.

Verfasst: 11.03.2009, 08:38
von JohnBi
hier damit behebste das Problem

Code: Alles auswählen

RewriteRule ^index.html$ / [R=301,L] 
RewriteRule ^(.*)/index.html$ /$1/ [R=301,L] 
RewriteRule ^(.*)/(.*)/index.html$ /$1/$2/ [R=301,L]

Verfasst: 11.03.2009, 08:40
von profo
Der Rewrite-Code sollte zwar nach www.* umleiten, lässt aber den Rest unbelassen. Du solltest dann also bei Adressen wie "www.domainname.tld///index.html" landen. Dein CMS müsste diese Adressen jetzt korrekt auswerten und entsprechende 404er oder auch wieder Umleitungen veranlassen.

Re: Domain auf (fast) unendlich verschiedene Arten aufrufbar

Verfasst: 11.03.2009, 11:04
von Mork vom Ork
turnschuh hat geschrieben:bin von einem Checkertool gewarnt worden
[…]
domainname.tld/
domainname.tld//
domainname.tld///
Ganz ehrlich: Wenn das Teil allen Ernstes Mülladressen mit mehreren Schrägstrichen abprüft, dann taugt es nichts bzw. ist ein Spielzeug für Paranoiker. Von so einem Unfug solltest du dich nicht sonderlich irritieren lassen.
Du kannst aber ein wenig Vorsorge tragen, indem du in deinen Verweisen absolute Pfade verwendest (/bla/fasel/ statt fasel/). Sollte sich in den nächsten hundert Jahren doch mal jemand vertippen und einen Schrägstrich zu viel eintragen, pflanzt sich das Übel wenigstens nicht fort. Falls du nichtsdestotrotz viel Prozessorzeit zu verschenken und noch mehr Angst hast:

RewriteCond %{THE_REQUEST} "^(?:GET|HEAD) (.*?)/{2,}(.*?) "
RewriteRule . %1/%2 [R=301,L]

Wirkt merkwürdigerweise nicht bei example.com///, tiefere URLs wie zum Beispiel example.com///test oder example.com///bla//////fasel////// werden aber abgefangen.

Die Geschichte mit den index.xy-Dateien kannst du davon unabhängig folgendermaßen beheben:

1.
Gar nicht erst auf index.xy verweisen.

2.
Dafür sorgen, dass auch andere nicht auf index.xy verweisen.

3.
Prüfen, dass wirklich niemand auf index.xy verweist.

4.
RewriteCond %{THE_REQUEST} "^(?:GET|HEAD) (.*/)index\.[a-z]+[? ]"
RewriteRule . %1 [R=301,L]

In dieser Reihenfolge.

Verfasst: 11.03.2009, 22:25
von turnschuh
Vielen Dank für Eure Antworten,
habe die Lösungsvorschläge mal ausprobiert. Bei mir gabs folgende Ergebnisse:

reduziert https://www.domainname.tld////index.html zu https://www.domainname.tld/ :P
JohnBi

Code: Alles auswählen

RewriteRule ^index.html$ / [R=301,L] 
RewriteRule ^(.*)/index.html$ /$1/ [R=301,L] 
RewriteRule ^(.*)/(.*)/index.html$ /$1/$2/ [R=301,L]
hier hat sich https://www.domainname.tld////index.html nichts verändert
Mork vom Ork

Code: Alles auswählen

RewriteCond %{THE_REQUEST} "^(?:GET|HEAD) (.*?)/{2,}(.*?) " 
RewriteRule . %1/%2 [R=301,L]
reduziert https://www.domainname.tld////index.html zu https://www.domainname.tld////
Mork vom Ork

Code: Alles auswählen

RewriteCond %{THE_REQUEST} "^(?:GET|HEAD) (.*/)index\.[a-z]+[? ]" 
RewriteRule . %1 [R=301,L]
die .htaccess sieht bei bir jetzt so aus:

Code: Alles auswählen

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\.domainname\.tld$ 
RewriteRule ^(.*)$ http://www.domainname.tld/$1 [L,R=301]

RewriteRule ^index.html$ / [R=301,L] 
RewriteRule ^(.*)/index.html$ /$1/ [R=301,L] 
RewriteRule ^(.*)/(.*)/index.html$ /$1/$2/ [R=301,L]
Die Ausdrücke https://www.domainname.tld//// {/=n} bleiben dann zwar so stehen, aber die index ist weg, egal mit wieviel Slashes.
Somit hat sich das Problem für mich, mit der (fast Unendlichkeit) erledigt.

Vielen Dank an für Eure Hilfe. :P