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: 13.03.2008, 13:22
von wuschba
Hat niemand ne Idee?

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.
Danke.