Seite 1 von 1

index.php umleiten auf / inkl. Unterordner

Verfasst: 14.08.2011, 11:05
von Ice Man
Hi, seit ein paar Wochen hab ich ein komisches Problem.
In meinem 404 Log erscheinen Seiten die es nicht gibt, die auch nirgendes verlinkt sind.

Bsp:

Per Modrewrite hab ich schöne "sprechende URLS"

domain.de/marke/vw/
domain.de/marke/fiat/
domain.de/typ/kombi/
domain.de/typ/sportwagen/

das geht dann nach xyz.php?marke=vw

Das funktioniert alles bestens, aber seit ein paar Wochen wird in den "/" hinten manchmal eine index.php angehängt.

Da dieses in der .htaccess so nicht vorkommt, gibts einen 404er.

Da ich einge Varianten hab, also nicht nur marke, typ sondern noch viele andere brauch ich einen Universelle .htaccess Anweisung, das die .index.php immer aus der Browserzeile entfernt wird und nur zum
unterordner weitergeleitet wird

Bsp:

domain.de/typ/sportwagen/index.php => domain.de/typ/sportwagen/
domain.de/typ/kombi/index.php => domain.de/typ/kombi/
domain.de/typ/irgendwas/index.php => domain.de/typ/irgendwas/

gibts dafür eine universelle Anweisung ?

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

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 14.08.2011, 11:22
von Synonym
gibts dafür eine universelle Anweisung ?
Ja.

Aber erst mal eine Gegenfrage. Gibt es bei Dir irgendwo wirklich eine index.php, also ein File, das tatsächlich vorhanden ist?

Ich denke mal im Root, oder?

Gibt es Unterordner, in denen eine echte index.php liegt?

"marke" und "typ". Was sind das für Zeichen? Buchstaben? Zahlen? Gemicht? Was genau?

Theoretisch möglich wäre so etwas (ungetestet):
RewriteRule ^([^.]+)/index\.php /$1/ [R=301,L]

Verfasst: 14.08.2011, 11:43
von Ice Man
jo, im Root gibt es eine index.php
Aber sonnst nirgens

Marke und Typ sind "virtuelle" unterordner, die nur für die Suma existieren, und per Modrewrite in datei.php?typ=unterordner1&marke=unterordner2 umgeschrieben werden.

Edit, funktionierte super, die komischen falschen index.php verschwinden.
Hab aber nicht an den Admin Bereich gedacht, da liegt auch eine index.php die nun nicht mehr lädt.

Verfasst: 14.08.2011, 11:57
von Synonym
Ok, also gibt es doch eine Unterordner, in dem eine index.php liegt - der Adminbereich.

Zwei Ansätze

Entweder die Rule für /admin/ ausklammern oder eben prüfen, ob eine index.php wirklich als Datei vorhanden ist.

#Ausklammern
RewriteCond %{REQUEST_URI} !^/admin/
Also, wenn die URI nicht mit "/admin/" anfängt

# File prüfen
RewriteCond %{REQUEST_FILENAME} !-f
Also, wenn kein echtes File

Die Cond muss jeweils direkt vor die Rule.

Ebenfalls ungetestet.

Verfasst: 14.08.2011, 13:26
von Ice Man
Klasse das mit der Prüfung hat funktioniert.
Ich wusste nicht das man sowas in die htaccess schreiben kann.

Belastet diese Prüfung den Server jetzt ?
Oder ist dieese Prüfung unerheblich ?

Verfasst: 14.08.2011, 13:38
von Synonym
Belastet diese Prüfung den Server jetzt ?
Ja
Oder ist dieese Prüfung unerheblich ?
Auch ja :-)

Die Variante mit "REQUEST_FILENAME" "belastet" etwas mehr, da dazu auf dem Dateisystem ein Zugriff erfolgen muss. Ist dafür aber auch für alle Unterverzeichnisse dann gültig, nicht nur für "admin".

Die andere ist "weniger Belastung", da es nur ein Stringvergleich ist, dafür aber auch nur für "admin" und nichts anderes.

Und "belastet" bedeutet hier etwas im Bereich von Millisekunden.

Verfasst: 14.08.2011, 15:12
von Ice Man
Ok, wollte nur sicher gehen, das die Seitenaufrufe deswegen nicht länger dauern ;)