| 

.NET C# Java Javascript Exception

1
Hallo,

ich möchte gerne eine Umleitung für eine einzelne Datei einstellen.

Die Datei liegt in einem Unterverzeichnis
/flatrate/uebersicht.html


Immer wenn diese Datei aufgerufen wird, möchte ich, dass in der Browseraddresszeile steht:

http://meine-domain.de/tarifvergleiche/dsl/uebersicht.html


Ich dachte, dass das ganz einfach zu realisieren sein müsste über:

RewriteEngine On
RewriteRule ^tarifvergleiche/dsl/uebersicht.html$ uebersicht.html [R=301,L]


Ich bekomme dann jedoch immer die Fehlermeldung im Browser:

The requested URL /tarifvergleiche/dsl/uebersicht.html was not found on this server.


Wo ist mein Fehler? Die .htaccess liegt im Unterverzeichnis flatrate. Muss ich mit BaseDir noch etwas einstellen?
02.04.2015
2 Antworten
0
Also ich verstehe deine Frage so: Wenn ich http://meine-domain.de/tarifvergleiche/dsl/uebersicht.html aufrufe, möchte ich dass der Inhalt von /flatrate/uebersicht.html angezeigt wird, in der Adressleiste vom Browser aber weiterhin /tarifvergleiche/dsl/uebersicht.html steht.

Das geht mit:
RewriteEngine On
RewriteRule ^tarifvergleiche/dsl/uebersicht\.html$ /flatrate/uebersicht.html [L]

Das funktioniert so: RewriteRule VON NACH [FLAGS], wobei L für Letze Anweisung steht und hier eher optional ist.

Die .htaccess-Datei muss dabei unter / liegen (oder unter /tarifvergeliche, wenn du dann tarifvergeliche/ in der RewriteRule weg lässt)

Wenn du stattdessen möchtest, dass beim Aufruf von /tarifvergleiche/dsl/uebersicht.html auf /flatrate/uebersicht.html umgeleitet wird und auch /flatrate/uebersicht.html in der Adressleiste des Browsers steht, geht das so:
RewriteEngine On
RewriteRule ^tarifvergleiche/dsl/uebersicht\.html$ /flatrate/uebersicht.html [R=301,L]

Das funktioniert so: RewriteRule VON NACH [FLAGS], R=301 steht für den Redirect (301 Moved Permanently), L steht wieder für Letzte Anweisung und ist in dem Fall auch optional.

Viele nützliche Infos zu mod_rewrite findest du übrigens in der Dokumentation
02.04.2015
phg 1,6k 3
Hi,

vielen Dank erstmal für deine Antwort.

Noch eine frage zum Verständnis. Müsste im ersten Parameter vor dem Punkt vor html nicht ein Slash stehen, damit der Punkt "escaped" wird? Am Ende dann noch ein "$" für das Ende des Strings?

Dann hatte ich es aber richtig gemacht, und bekomme trotzdem diese Fehlermeldung. Woran mag das liegen:

The requested URL /tarifvergleiche/dsl/uebersicht.html was not found on this server.
coder_10 03.04.2015
Hi,
ja den Punkt sollte man mit einem Back-Slash maskieren, ansonsten matcht jedes Zeichen an der Stelle. Da hast du recht.
Das $ am Ende ist wichtig, wenn man mehrere Anweisungen hat die sonst zu einem Konflikt führen. Bei nur einer Anweisung halte das für Optional, schadet aber auch nicht.
Kannst du mal schreiben in welchem Verzeichnis deine .htaccess liegt, wo die anzuzeigende Datei (uebersicht.html?) liegt und nochmal deine RewriteRule?
phg 03.04.2015
0
Hallo zusammen,
versuch es mal so:
RewriteEngine On
RewriteRule /tarifvergleiche/dsl/uebersicht.html /flatrate/uebersicht.html [R=301,L]


Ich habe das auf einer CentOs 7 nachgestellt und es hat genau so funktioniert. Auch mit mehreren Regeln hintereinander (also mehrere Zeilen).
Interessant währe noch zu wissen ob dir dein Hoster die RewriteEngine überhaupt erlaubt? Nicht alle Hoster erlauben das anhand einer .htaccess Datei.

Gruß Jens
07.04.2015
XJenso 322 7
Wenn mod_rewrite nicht aktiv ist, dann kommt normalerweise ein "500 - Internal Server Error" weil der Apache die Rewrite* befehle dann nicht kennt und abbricht. Können natürlich sein, dass sich ein selbstgebauter Apache des Hosters da anders verhält.
phg 08.04.2015

Stelle deine --Frage jetzt!