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

htaccess redirect upper- to lowercase-URL´s

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
euroexchange.de
PostRank 6
PostRank 6
Beiträge: 471
Registriert: 02.06.2007, 13:49

Beitrag von euroexchange.de » 10.09.2009, 13:49

Hallo.

Laut Webmastertools habe ich doppelten Content durch unterschiedliche URL´s, bedingt durch einmal Klein- und einmal Großschreibung innerhalb der URL´s.

Beispiel:
Im schlimmsten Fall auch noch:
Das leichteste wäre natürlich ein Eintrag in "httpd.conf" mit:
RewriteMap lowercase int:tolower
RewriteCond $1 [A-Z]
RewriteRule ^/(.*)$ https://www.example.de/${lowercase:$1} [R=301,L]
Da ich bei meinem Server aber darauf keinen Zugriff habe muß ich mit einem Workaround arbeiten. Dieser sieht wie folgt aus:
# Skip this entire section if no uppercase letters in requested URL
RewriteRule ![A-Z] - [S=28]
# Else rewrite one of each uppercase letter to lowercase
RewriteRule (*[A]*)A(.*)$ /$1a$2
RewriteRule ^([^B]*)B(.*)$ /$1b$2
RewriteRule ^([^C]*)C(.*)$ /$1c$2
RewriteRule ^([^D]*)D(.*)$ /$1d$2
RewriteRule ^([^E]*)E(.*)$ /$1e$2
RewriteRule ^([^F]*)F(.*)$ /$1f$2
RewriteRule ^([^G]*)G(.*)$ /$1g$2
RewriteRule ^([^H]*)H(.*)$ /$1h$2
RewriteRule ^([^I]*)I(.*)$ /$1i$2
RewriteRule ^([^J]*)J(.*)$ /$1j$2
RewriteRule ^([^K]*)K(.*)$ /$1k$2
RewriteRule ^([^L]*)L(.*)$ /$1l$2
RewriteRule ^([^M]*)M(.*)$ /$1m$2
RewriteRule ^([^N]*)N(.*)$ /$1n$2
RewriteRule ^([^O]*)O(.*)$ /$1o$2
RewriteRule ^([^P]*)P(.*)$ /$1p$2
RewriteRule ^([^Q]*)Q(.*)$ /$1q$2
RewriteRule ^([^R]*)R(.*)$ /$1r$2
RewriteRule ^([^S]*)S(.*)$ /$1s$2
RewriteRule ^([^T]*)T(.*)$ /$1t$2
RewriteRule ^([^U]*)U(.*)$ /$1u$2
RewriteRule ^([^V]*)V(.*)$ /$1v$2
RewriteRule ^([^W]*)W(.*)$ /$1w$2
RewriteRule ^([^X]*)X(.*)$ /$1x$2
RewriteRule ^([^Y]*)Y(.*)$ /$1y$2
RewriteRule ^([^Z]*)Z(.*)$ /$1z$2

# If more uppercase letters remain, re-invoke .htaccess and start over
RewriteRule [A-Z] - [N]
# Else do a 301 redirect to the all-lowercase URL
RewriteRule (.*) $1 [R=301,L]
Zur Problembeschreibung.
Mit dem obigen Code wird aus z.B.:
Man beachte das "Search.php". Der Code verändert also nur die Großschreibung vor dem "?" in Kleinschreibung.

Hat jemand von Euch eine Idee wie ich die RewriteRules auf die gesamte URL anwende? Danke!

Anzeige von ABAKUS

von Anzeige von ABAKUS »


Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

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

Beitrag von mgutt » 10.09.2009, 16:02

In dem Du den Rewrite im PHP-Script realisierst.

D.h. Du liest searchword aus und prüfst, ob vorher und nachher ein unterschiedliches Ergebnis existieren:

Code: Alles auswählen

if ($_GET['searchword'] != preg_replace('#[^a-z0-9- ]#', '', $_GET['searchword']) {
In dem Fall werden alle Zeichen außer kleine Buchstaben, Zahlen, der Bindestrich und das Leerzeichen ersetzt. Wenn also große Buchstaben drin sind, wird die Bedingung fehlschlagen und Du kannst den Besucher umleiten.

Du solltest Dein Script natürlich entsprechend anpassen. Falls aber noch andere Zeichen erlaubt sind z.B. Umlaute oder Sonderzeichen, müsste man das anders lösen.

Auch sollten diese Links gar nicht erst auf Deiner Seite auftauchen. Da solltest Du schon eingreifen mit strtolower().

Gruß
Ich kaufe Dein Forum!
Kontaktdaten

euroexchange.de
PostRank 6
PostRank 6
Beiträge: 471
Registriert: 02.06.2007, 13:49

Beitrag von euroexchange.de » 10.09.2009, 16:11

@mgutt

Danke für Deine Hilfe.

strtolower habe schon gemacht und es existieren auch keine URL´s in Großschreibung mehr auf meinen Seiten.

Problem sind die von außen kommenden URL´s. Die muß ich umschreiben und mit 301er umleiten.

Nachtrag:
Tschuldigung. Ich hatte Dir gerade nicht ganz folgen können. Das könnte ja eine Lösung sein! Ist der Redirect so auch als 301er nutzbar?