Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

mod_rewrite mit Leerstellen

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
Pretender
PostRank 9
PostRank 9
Beiträge: 1081
Registriert: 22.04.2004, 14:44
Wohnort: Naumburg

Beitrag von Pretender » 20.04.2011, 11:11

Tach,

ich habe hier ein kleiners Problem mit Leerstellen in der URL mit mod_rewrite.

Bisher sieht es so aus in der htaccess:

Code: Alles auswählen

RewriteRule ^name,([^/]+),([^/]+)$ /ordner/datei.php?var1=$1&var2=$2[L]
Wenn man nun eine URL aufruft in der Leerzeichen sind, bekomme ich ne 403 Meldung.

Ich würde nun gern aus dieser URL z.b.

Code: Alles auswählen

www.webadresse.xl/name des users,verein
die Leestellen entfernen und per 301 auf die richtige URL umleiten. Sie sollte dann um bei dem Beispiel zu bleiben so aussehen:

Code: Alles auswählen

www.webadresse.xl/name+des+users,verein
VG und THX

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Synonym
PostRank 10
PostRank 10
Beiträge: 3708
Registriert: 09.08.2008, 02:55

Beitrag von Synonym » 20.04.2011, 14:51

...bekomme ich ne 403 Meldung
Und das ist auch richtig, denn in einer URL gibt es keine Leerzeichen.

Was Du suchst ist wohl eher %20

https://de.wikipedia.org/wiki/URL-Encoding

Pretender
PostRank 9
PostRank 9
Beiträge: 1081
Registriert: 22.04.2004, 14:44
Wohnort: Naumburg

Beitrag von Pretender » 20.04.2011, 15:14

Hallo,
Sorry aber du hast mich bestimmt falsch verstanden.
Klar kommt da ne 403 und das dies richtig ist, steht außer Zweifel und war nicht meine Frage. Ich suche auch nicht nach %20 sondern danach wie ich per mod_rewrite die URL mit Leerstelle -die Google so bekannt ist- umwandeln kann, damit mir die Seiten bei Google nicht verloren gehen.

URL-Encoding kommt daher auch nicht frage, da ja eine 403 kommt und daher die Seite nicht aufgrufen wird und ich daher auch kein PHP benutzen kann.
Eine Idee habe ich aber noch: GGF könnte man

Code: Alles auswählen

ErrorDocument 403 http://www.pro-search.info/umleitung.php
in die htaccess schreiben und dort-auf der umleitung.php- eventuell den Ref auswerten und dann das Gesuchte so weiterleiten um eine Seite zu bekommen.

Könnte das gehen?

Grüße

800XE
PostRank 10
PostRank 10
Beiträge: 5223
Registriert: 02.12.2004, 03:03

Beitrag von 800XE » 20.04.2011, 15:29

Pretender hat geschrieben:Eine Idee habe ich aber noch: GGF könnte man

Code: Alles auswählen

ErrorDocument 403 http://www.pro-search.info/umleitung.php
in die htaccess schreiben und dort-auf der umleitung.php- eventuell den Ref auswerten und dann das Gesuchte so weiterleiten um eine Seite zu bekommen.
warum den kurzen Weg gegehn wenn man eien langen Weg gehen kann?
Pretender hat geschrieben:URL-Encoding kommt daher auch nicht frage, da ja eine 403 kommt und daher die Seite nicht aufgrufen wird und ich daher auch kein PHP benutzen kann.
ich hatte da mal Probleme bei hostern die RewriteEngine nicht erlaubten
und ich bastelte mir einen Workaround (Umweg) über Error404
https://mit-oder-ohne-www.de/domain-wei ... irect.html
=
1. Error403 abfangen
2. URL aus $_SERVER['REQUEST_URI'] auslesen
3. Header auf 200 korriegieren (oder nen 301 machen, was aber unlogisch wäre)

Synonym
PostRank 10
PostRank 10
Beiträge: 3708
Registriert: 09.08.2008, 02:55

Beitrag von Synonym » 20.04.2011, 16:38

Also ich glaube, dass ich schon weiß was Du meinst.
mod_rewrite die URL mit Leerstelle -die Google so bekannt ist- umwandeln kann
Ich bezweifle, dass Google URLs mit Leerzeichen kennt, lasse mich aber gerne eines anderen belehren. Jeder Browser macht aus dem Leerzeichen automatisch ein %20, weil es ein Leerzeichen in der URL eben nicht gibt.

Daher greift auch Deine Rule nicht, wenn da ein Leerzeichen im Pattern ist, da es eben eine falsche Syntax ist.

Eine URL ala
www.webadresse.xl/name des users,verein
kann es nicht geben.
Du muss wenn schon so sein:
www.webadresse.xl/name%20des%20users,verein

Wenn Du einen Link hast, der so verlinkt, dann ist das einfach nur falsch. Der Browser ist aber so schlau und ersetzt das ganze von selbst mit %20.

Demzufolge musst Du auch bei der Rule eben nicht nach dem Leerzeichen "abfragen", sondern nach dem "%20".

Wie gesagt, bin mir eigentlich sicher, lasse mich aber gerne belehren ;-)

Bzw... Ich korrigiere mich schon mal selbst... Das Leerzeichen muss maskiert werden, also:
www.webadresse.xl/name\ des\ users,verein

Allerdings denke ich mal, dass nicht bekannt ist, wie viele Leerzeichen denn nun genau enthalten sein können.

Daher würde ich einfach nur prüfen, ob ein Leerzeichen vorhanden ist, wenn ja, das ganz ein ein kleines Script übergeben, dort alle Leerzeichen ersetzen und dann die Weiterleitung durchführen.

Pretender
PostRank 9
PostRank 9
Beiträge: 1081
Registriert: 22.04.2004, 14:44
Wohnort: Naumburg

Beitrag von Pretender » 21.04.2011, 18:04

Die URL`s mit Leerstellen gibt mir Google in den Webmaster Tools als Fehler 403 und davon schlappe 44k Seiten. Dies ist geschehen, da Google mal wieder an den Tag sooo fleißig gespidert hat, als ich einen Fehler gemacht hatte und eben all diese Seiten mit Leerstellen gespidert hat.
Sicher hat Google oder auch der Browser da %20 ersetzt. Allerdings werden bei den Fehler die URL ohne %20 angezeigt. Wenn ich den Link aufrufen ersetzt freilich der Browser diese Leestellen mit %20, jedoch scheint mod_rewrite dies etwas anders zu sehen.

Wenn ich die URL in den Browser kopiere und die Leestellen mit einem + ersetze, wird die URL ohne Problem aufgerufen.

Aber wie auch immer, ich versuche mal das mit dem Workaround zu verstehen :)

methusalem
PostRank 4
PostRank 4
Beiträge: 139
Registriert: 26.01.2009, 19:52
Wohnort: Hamburg

Beitrag von methusalem » 21.04.2011, 18:42

Siehst Du im access.log Zugriffe des Googlebot mit Leerzeichen in der URL?

mgutt
PostRank 10
PostRank 10
Beiträge: 3206
Registriert: 08.03.2005, 13:13

Beitrag von mgutt » 22.04.2011, 11:21

Mich würde mal interessieren was lokal dann überhaupt aufgerufen wird. Der schneidet doch den String dann komplett ab oder nicht? Mach mal ein echo der REQUEST_URI auf der Fehlerseite.

Vielleicht hilft es das interne escapen von mod_rewrite zu deaktivieren:

Code: Alles auswählen

RewriteRule ^name,([^/]+),([^/]+)$ /ordner/datei.php?var1=$1&var2=$2[NE,L]
NE steht für NO ESCAPE:
https://httpsd.apache.org/docs/current/ ... writeflags

Ich bin mir nur gerade nicht sicher, ob sich daraus nicht auch ein Nachteil ergeben könnte. Probier dann in jedem Fall auch mal den Aufruf mit + und %20.
Ich kaufe Dein Forum!
Kontaktdaten

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag