Zur Navigation

Umleitung Verzeichnis1 -> Verzeichnis

1 Mathias

Ich hau gleich noch einen hinterher. Ich beschäftige mich einfach viel zu selten mit htaccess.

Der im letzten Thread besprochene Shop hängt jetzt wegen identischer Kategorie-Namen eine "1" an die Kategorie.

Ein Link sieht so aus:
http://server.com/shop/Verzeichnis1

Allerdings wird dadurch langfristig doppelter Content generiert, da die Seite auch ohne die "1" erreichbar ist: http://server.com/shop/Verzeichnis


Mein Code:
Redirect /Verzeichnis1 http://server.com/shop/Verzeichnis
klappt leider nicht.

Hast Du eine Idee für mich?

01.04.2011 21:44

2 Jörg Kruse

Ein Link sieht so aus:
http://server.com/shop/Verzeichnis1

Dann fehlt hier noch das "/shop":

Redirect /shop/Verzeichnis1 permanent http://server.com/shop/Verzeichnis

Die Pfade beziehen sich bei der Redirect Direktive immer auf das DocumentRoot-Verzeichnis

Außerdem würde ich noch ein "permanent" einfügen, damit die Suchmaschinen die Zieladresse als kanonische URL identifizieren

01.04.2011 22:42

3 Mathias

Ja, das funktioniert ... teilweise. Irgendwie scheinen dort noch Direktiven abgearbeitet werden, die weiter hinten vorkommen.

Der Link sieht danach so aus:
http://server.com/shop/Verzeichnis?bluegatemapto=category&linkurl=Verzeichnis1


Irgendwie muss ich dem redirect sagen, er soll danach keinen Befehl mehr ausführen.


Irgendeine von den folgenden Direktiven scheint Probleme zu machen:

RewriteBase /shop
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+) - [PT,L]

# Rule: Product Info
RewriteRule ^(.*)products\/(.+)\.html$ product_info.php?bluegatemapto=product&linkurl=$2 [qsappend,L]

# Rule: Content
RewriteRule ^(.*)content\/(.+)\.html$ shop_content.php?bluegatemapto=content&linkurl=$2 [qsappend,L]

# Rule: Category Listing
RewriteCond %{REQUEST_FILENAME} !\.html$
RewriteRule ^(.*)$ index.php?bluegatemapto=category&linkurl=$1 [qsappend,L]

PS: Die htaccess liegt im Unterverzeichnis /shop/

02.04.2011 00:18

4 Jörg Kruse

Irgendwie muss ich dem redirect sagen, er soll danach keinen Befehl mehr ausführen.

Das geht nicht mit der Redirect Direktive - dazu benötigt man mod_rewrite. Nach einem L-Flag sollten keine weiteren Rules mehr ausgeführt werden:

RewriteBase /shop
RewriteRule ^Verzeichnis1$ http://server.com/shop/Verzeichnis [R=301,L]

02.04.2011 11:06

5 Mathias

Es ist einfach unglaublich für mich. Glaub nicht, ich hätte nicht mit Rewrite rumprobiert. Bei mir fehlte natürlich das "^" und $. Ich merk einfach, wie wenig ich mich damit auskenne.

Vielen Dank noch einmal Jörg, genau so funktioniert es bestens!

02.04.2011 12:12

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]