Seite 1 von 1

Per .htaccess komplizierte URL rewriten - Frage

Verfasst: 28.11.2005, 13:13
von Garfield
Hallo,

ich habe eine Frage zum URL-Rewriting.

Ich hatte mal dummerweise per .htaccess Dateinamen wie folgt umgeschrieben :

blabla.php?id=4712 :arrow: artikel-4712-Ich%20bin%20die%20Artikelbezeichnung.html

Kam halt dummerweise so raus, weil ich das nicht anders hinbekam. Teilweise waren sogar noch Umlaute ( %E4 = ä ) in dem Dateinamen.

Jetzt habe ich das geändert auf :

artikel-4712-Ich-bin-die-Artikelbezeichnung.html

und die Umlaute werden jetzt zu ae, Ae, oder so.

Jetzt sind zwar die alten Dateien :

artikel-4712-Ich%20bin%20die%20Artikelbezeichnung.html

nirgends mehr verlinkt und werden (hoffentlich) nicht zu Duplicate Content führen. Aber trotzdem wäre es mir lieber, wenn ich die alten Dateinamen trotz der %20 's, %E4 's etc. per 301 weiterleiten könnte auf die neuen Dateinamen.

Habe das dann per .htaccess probiert, mein Server hat dann aber nen 500er-Fehler rausgegeben, egal ob ich ein echtes Leerzeichen oder aber den Prozentcode in die .htaccess geschrieben habe.

Kann mir jemand die richtige Anweisung für die .htaccess sagen, wie ich einen sauberen 301er hinkriege ?

Was wahrscheinlich nicht gehen wird, ist, daß ich einzelne Dateien anlege und im Header dann nen 301er mitsende. Da steht mir die rewrite_rule vermutlich im Weg (habs aber auch noch nicht ausprobiert).

Danke :D

Verfasst:
von

Per .htaccess komplizierte URL rewriten - Frage

Verfasst: 28.11.2005, 13:59
von In Extremo
Schließe mich Garfields Frage an.

Habe genau das selbe Problem!

Verfasst: 28.11.2005, 15:53
von tauchvideo
Ich glaub das wird schwierig.

Ich hätte auf die Schnelle nur die Idee eine Fehlermeldung auszugeben und damit wenigstens das DC-Problem zu lösen:

Code: Alles auswählen

RewriteCond %{QUERY_STRING} .*\%20.* [NC] 
RewriteRule .* - [F,L]
Aber eine Umleitung sollte so ohne weiteres nicht gehen.
Für die Besucher kann man ja eine spezielle Fehlerseite definieren und die damit auf die Startseite zurückholen.

dsich

Verfasst:
von

komplexe url umschreiben

Verfasst: 28.11.2005, 16:22
von koboxumi
Ich schließe mich auch an!

https://www.domain.de/hotelbewertung/op ... el=Alcudia

Gruß Kobo

Per .htaccess komplizierte URL rewriten - Frage

Verfasst: 28.11.2005, 16:23
von Garfield
Danke, dsich. Die Rule funktioniert aber leider nicht, es passiert gar nichts dadurch.

Per .htaccess komplizierte URL rewriten - Frage

Verfasst: 28.11.2005, 16:32
von In Extremo
Es wird doch wohl im Jahre 2005 möglich sein müssen, ein lächerliches Leerzeichen in einer RewriteRule darzustellen :(

Zum Glück gibt es bei Umlaute keine Probleme.

Verfasst: 28.11.2005, 17:28
von tauchvideo
garfield das konnte nicht gehen, ich hab nicht nachgedacht!

Der Query-String wird ja erst nach dem "?" erzeugt, bei Dir ist es aber innerhalb der URL. Wichtig ist auch das %20 nur die Übersetzung des Leerzeichens ist und so auch innerhalb der htaccess behandelt werden muss.

Diese Rule hier geht:

Code: Alles auswählen

RewriteCond %{REQUEST_FILENAME} .*\ .* [NC] 
RewriteRule .* - [F,L]
Ich bin aber auf einen durchaus interessanten Thread gestossen der Dir ggf. weiterhelfen kann. Ich hatte aber bislang nicht die Zeit dies auszuprobieren.

Schau mal Hier

dsich

Per .htaccess komplizierte URL rewriten - Frage

Verfasst: 28.11.2005, 17:45
von chris21
Das funktioniert nur so halb. Also, ich (der gleiche wie bei modrewrite) kann zwar jetzt bei einer Abfrage auf %20wort%20 .html meine Datei +wort+wort .html rauslesen, aber ich habe es immer noch nicht geschaftt, dass dabei auch wirklich die url umgeschrieben wird. Hätte daher gewissermaßen auch ein DC-Problem wenn mal irgendwer auf die falsche verlinkt.

Und ganz ehrlich: ich blicke da auch nur immer zu 10% durch.

Verfasst: 28.11.2005, 17:53
von tauchvideo
Das ist richtig, er schreibt natürlich die URL nicht um sondern interpretiert diese nur anders.

Ich hab es bislang auch noch nicht probiert, hatte keine Zeit dafür.
Die o.g. Rule verhindert aber zumindest den Seitenaufruf wenn ein Leerzeichen drin ist und verhindert damit das DC-Problem.
Es ist nicht die feine englische Art, aber wenigstens eine Notlösung.


dennis

Per .htaccess komplizierte URL rewriten - Frage

Verfasst: 28.11.2005, 20:02
von Garfield
@dsich: Nochmals danke, aber auch diese Rule hat bei mir überhaupt keine Wirkung.

Ich werde mich mal durch den Thread lesen, den du verlinkt hast.

Per .htaccess komplizierte URL rewriten - Frage

Verfasst: 28.11.2005, 22:47
von tauchvideo
@garfield

ich hab die Rule aber so getestet! Bei mir geht sie ... genau so !


Dennis

Per .htaccess komplizierte URL rewriten - Frage

Verfasst: 29.11.2005, 08:24
von Garfield
Seltsam. Trotzdem vielen Dank für deine Mühe !

In dem modrewrite-Forum hab ich mich auch mal ein wenig durchgelesen, aber noch keine Lösung gefunden.

Ich werde es dann wohl so machen müssen, daß ich die alten artikel-4712-bezeichnung.html komplett ändere in art-4712-bezeichnung.html, damit artikel-... nicht mehr erreichbar ist.

Per .htaccess komplizierte URL rewriten - Frage

Verfasst: 30.11.2005, 19:21
von chris21
@Garfield:

Ich verwende jetzt folgendes und das funktioniert auch:
RewriteEngine On
RewriteRule ^(.+)\ (.+)\.html$ $1\+$2\.html [NC]
RewriteCond %{REQUEST_URL} GET\ (.+)\ (.+)\.html
RewriteRule ^(.*)$ /$1\+$2.html [R=301,L]
Allerdings mit der bereits oben erwähnten Warnung: dadurch produziere ich DC, da jetzt die Dateien mit "+", mit "%20" und mit " " (Leerzeichen) aufrufbar sind. Weiß also nicht, ob Dir das hilft.

Falls es Dir noch gelingen sollte, eine wirkliche Umleitung zu erreichen, wäre ich natürlich sehr froh, wenn Du dies kundtun könntest.