Seite 1 von 1

.htaccess Weiterleitungs-Problem

Verfasst: 29.03.2013, 17:33
von Shizoe
Hallo Freunde,

ich weiß, dass heute Feiertag ist. Aber ich brauche mal dringend Hilfe.

Meine htaccess-Datei sieht folgendermaßen aus:

Code: Alles auswählen

# Webseite mit WWW aufrufen!
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*) http://www.%{HTTP_HOST}/$1 [R=301]

#Ordner im Index aufrufen!
RewriteCond %{REQUEST_URI} /$ 
RewriteRule ^(.*)$ http://www.domain.de/$1index.html [R=301,L]


Wenn ich jetzt www.domain.de aufrufe, wird auf www.domain.de/index.html umgeleitet. (gut so)

Wenn ich jetzt domain.de/index.html aufrufe, wird auf www.domain.de/index.html umgeleitet (gut so)

Wenn ich es jedoch kombiniere und domain.de aufrufe, wird auf https://www.domain.de/https://www.domai ... index.html umgeleitet... woran liegt das?

:(

Verfasst:
von

Re: .htaccess Weiterleitungs-Problem

Verfasst: 29.03.2013, 18:30
von Melegrian
Shizoe hat geschrieben:ich weiß, dass heute Feiertag ist.
Wäre ja kein Problem, nur Fragen zu stellen, wo man nachdenken muss, ist nicht schön. Schaue Dir mal das Muster an.
Shizoe hat geschrieben:

Code: Alles auswählen

RewriteCond %{REQUEST_URI} /$ 
Sagt mir, die Regel trifft zu, wenn die URI mit einem / endet. Du meintest sicherlich, wenn nichts weiter als ein / enhalten ist und hast ^ den Anfang vergessen anzugeben, damit die URI auch mit keinen weiteren Zeichen anfangen darf. Auf Dein Muster würde halt auch /ein_langer_name/ zutreffen, weil Du ja nur das /$-Ende überprüfst und ein . Probiere es mal so, mehr als fehlerhaft kann es auch nicht sein:

Code: Alles auswählen

RewriteCond %{REQUEST_URI} ^/$

Verfasst: 29.03.2013, 18:40
von chris21
@Melegrian: Die Regel kam ja von mir :)

(siehe hier: https://www.abakus-internet-marketing.d ... 16647.html)

Und da ging es mir auch um die Fälle von Unterordnern.

@Shizoe89:

Probier mal lieber, hier:

RewriteRule ^(.*) https://www.%{HTTP_HOST}/$1 [R=301]

ein L Flag mit einzufügen, also [R=301,L]

Verfasst: 29.03.2013, 18:58
von Melegrian
@ chris21, ja, dann ergibt das einen anderen Sinn, von den Verzeichnissen war ja hier nichts ersichtlich.

@ Shizoe, falls das L Flag bei der ersten Regel noch nicht genügen sollte, könntest Du hier eventuell noch eine zweite Bedingung aufnehmen. Ist aber nur ein Gedanke.

Code: Alles auswählen

#Ordner im Index aufrufen!
RewriteCond %{REQUEST_URI} /$
RewriteCond %{REQUEST_URI} !/index\.html$
RewriteRule ^(.*)$ http://www.domain.de/$1index.html [R=301,L]
Ich verstehe aber gerade nicht, warum die index.html bei /$ mit durchrutscht und dann hinten 2 dran hängen, eigentlich dürfte das doch ob so oder so nicht möglich sein.

Verfasst: 29.03.2013, 19:37
von chris21
Das müsste aber gerade die Geschichte sein, warum ich auf das L Flag komme: die zweite Regel wird beim Aufruf einer falschen Domain doppelt angewandt, da es auf den ursprünglichen Aufruf angewandt und auf den Aufruf der folgenden Aufruf der Weiterleitung.

Es ist praktisch derzeit eine UND Verknüpfung und keine erst A, dann B Verarbeitung.

Also Aufruf falsche Domain falschedomain.tld

Regel: Lenke auf richtige Domain und merke Dir: hänge index.html dran.

Zugleich wird richtige Domain intern noch mit / endend vermerkt, da das L Flag fehlt und somit wird die zweite Regel auch darauf angewandt und daher doppelt verarbeitet.

Schon hat man ein index.htmlindex.html

PS: Mit ner Zeichnung oder einem Diagramm wäre es einfacher zu erklären :D

Verfasst: 29.03.2013, 20:52
von Melegrian
Es wird sich wohl so verhalten, wie Du es beschreibst. Skizzieren zum besseren Verständnis wäre zuweilen schon sehr angebracht.

Verfasst: 29.03.2013, 21:01
von Shizoe
Probier mal lieber, hier:

RewriteRule ^(.*) https://www.%{HTTP_HOST}/$1 [R=301]

ein L Flag mit einzufügen, also [R=301,L]
Du hast mir wieder das Leben gerettet Chris21. Danke vielmals.
Natürlich danke ich auch alle anderen, die sich Gedanken darüber gemacht habe.

Ich wünsche euch ein paar schöne Osterfeiertage. :-)