Seite 1 von 1

.htaccess: Groß-Kleinschreibung egal

Verfasst: 12.03.2008, 11:31
von wuschba
Hallo! Ich möchte, dass in einem bestimmten Ordner die Groß-Kleinschreibung egal ist, also:
/ordner/Hallo.htm
/ordner/hallo.htm
/orDNer/hALLo.htm

soll immer die Datei /ordner/hallo.htm aufrufen. Es soll KEINE Weiterleitung sein. Kriege ich das irgendwie hin?

Verfasst:
von
Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

Verfasst: 12.03.2008, 11:34
von veritas-odium-parit
schau dir einfach mal die REWRITE-Engine an... durch eine ersetzung von großbuchstaben gegen kleinbuchstaben sollte das kein problem sein...

ohne redirect... ;)

Verfasst: 12.03.2008, 11:40
von wuschba
Danke für Deine Antwort. Ja, wenns so einfach wäre ;-) Wie ersetze ich denn bei einem Rewrite alle Groß- durch Kleinbuchstaben? Man kann zwar mit [NC] bei einem String-Test angeben, dass bei diesem Test die Groß-Kleinschreibung keine Rolle spielt, aber das ersetzt noch lange nicht das Ergebnis.

Verfasst:
von

Verfasst: 13.03.2008, 13:22
von wuschba
Hat niemand ne Idee? :o :cry:

Verfasst: 13.03.2008, 13:57
von chrizz
ich glaub ohne Redirect wird das nicht klappen. Evtl. ist das dann aber auch vom Server-OS abhängig. Linux bspw. unterscheidet zw. Groß- und Kleinschreibung.
Rufst du seite /haLLo.html auf, willst aber eigentlich Hallo.html haben, dann sind das 2 unterschiedliche seiten, die man umleiten muss....

so zumin. meine Idee...

Verfasst: 13.03.2008, 14:38
von wuschba
Hi chrizz, danke für Deine Antwort: Genau so ist es auf Linux.

Wie würde denn der Redirect aussehen? Achso, es kann leider nicht mit PHP gearbeitet werden sondern MUSS in der .htaccess passieren.

Verfasst: 13.03.2008, 15:58
von chris21
Folgendermaßen könntest Du es lösen:

Code: Alles auswählen

RewriteCond %{QUERY_STRING} !^umgeleitet=ja
RewriteCond %{REQUEST_URI} ^/(ordner)/(hallo).htm$ [NC]
RewriteRule (.*) /ordner/hallo.htm?umgeleitet=ja
D.H:

Wenn die abgerufene Datei nicht bereits durch die angehängten Parameter ?umgeleitet=ja darauf hinweist, bereits umgeleitet zu sein, wird geprüft, ob
die abgerufene Datei aus ordner/hallo.htm besteht (und zwar nicht case-sensitive) und intern (=keine Weiterleitung) auf /ordner/hallo.htm?umgeleitet=ja umgeleitet.


Allerdings schaffst Du Dir damit duplicate content. Aber vll. soll es ja für einen Bereich eingesetzt werden, in dem Suchmaschinenoptimierung nicht relevant ist.


Was jedoch leider nicht gehen dürfte:

Code: Alles auswählen

RewriteCond %{QUERY_STRING} !^umgeleitet=ja
RewriteCond %{REQUEST_URI} ^/([a-z]+)/([a-z]+).htm$ [NC]
RewriteRule (.*) /%1/%2.htm?umgeleitet=ja
Da dann das Ziel (die tatsächliche Datei weiterhin die groß geschriebenen Buchstaben behält und daher nicht gefunden wird.

Verfasst: 13.03.2008, 16:05
von wuschba
Danke für Deine Antwort. So eine Umleitung wäre ok (ist ja keine per 301 oder 302), das Problem ist aber, dass ich den Dateinamen nicht kenne - es soll ja für ALLE Dateien in /ordner/ gelten. Aber das geht dann wohl nicht, wie Du im 2. Teil ja auch schreibst.

Verfasst: 13.03.2008, 16:34
von chris21
Hi Wuschba,

ich habe es eben einfach mal getestet.

Anders als vermutet wird der Testpattern in den Klammern durch das NC erst kleingeschrieben, bevor diese Variablen von %1 etc. aufgegriffen werden. Daher ist es doch möglich, z.B. für Deinen Fall:

RewriteCond %{QUERY_STRING} !^umgeleitet=ja
RewriteCond %{REQUEST_URI} ^/(ordner)/([a-z]+).htm$ [NC]
RewriteRule (.*) /%1/%2.htm?umgeleitet=ja

zu nutzen. Läuft bei mir einwandfrei.


Sorry dafür, hatte beim Test vergessen, dass hallo.htm in %2.htm umzuändern. Die jetzt grau dargestellte Aussage ist also Stuss.

Vermutlich bleibt Dir dann nur eine Lösung z.B. über php:

Alles umleiten auf eine Datei umleitung.php?ziel=%2

und da dann etwas in der Art von:

<?php
$zieldatei=$_GET["ziel"];
$zieldatei=strtolower($zieldatei);
$zieldatei=$_ENV['Document_Root']."ordner/".$zieldatei.".htm";
include($zieldatei);
?>


Ach nein, PHP darf auch nicht genutzt werden? Ok, langsam gebe ich mich geschlagen.

Verfasst: 13.03.2008, 22:19
von wuschba
Hi Chris21, trotzdem danke für Deine Antworten: Zu wissen, dass es so nicht geht, ist ja auch besser als ständig weiter nachzugrübeln ;-)

Verfasst: 13.03.2008, 22:23
von TBT
das geht auch ohne mod_rewrite
für solche Fälle gibt es

in der .htaccess

# mod_speling
CheckSpelling on


siehe https://httpsd.apache.org/docs/2.0/mod/mod_speling.html

Verfasst: 13.03.2008, 23:54
von chris21
@TBT:

Manchmal kann es so einfach sein. :D

Danke.