Seite 1 von 1

mod_rewrite + osCommerce

Verfasst: 23.07.2006, 21:18
von Anakin
Hi,

habe oscommerce mit Ultimae SEO Contrib laufen, soweit auch alles ok, nur habe ich das gefühl das die Anzeige der Struktur nicht korrekt ist.

Da es momentan noch eine standard installation ist.. sind die standard Produkte drin.

Beispiel Menüführung:
DVD-Filme
- Action
- Drama
- Komödie etc.pp.

wenn man dann auf Action klickt bekommt man ja die produkt auflistung wo ich mir bsp. den Film Bladerunner mit Harrison Ford aussuche..

1. link: https://www.domain.tld/dvd-filme-c-3.html
2. link: https://www.domain.tld/filme-science-fi ... -3_11.html
3. link: https://www.domain.tld/blade-runner-directors-p-5.html

ich würde diese aber gerne so anzeigen lassen:

1. link: https://www.domain.tld/DVD-Filme/
2. link: https://www.domain.tld/DVD-Filme/Science-Fiction/
3. link: https://www.domain.tld/DVD-Filme/Scienc ... r-p-5.html

Zudem würde ich dadurch für die jeweilige Seite wo ich mich gerade befinde auch die jeweiligen Meta-keys und Descriptions drin haben sowie Title-tag bezeichnung.

meine .htaccess

Code: Alles auswählen

Options +FollowSymLinks
RewriteEngine On 
RewriteBase /

RewriteRule ^(.*)-p-(.*).html$ product_info.php?products_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-c-(.*).html$ index.php?cPath=$2&%{QUERY_STRING}
RewriteRule ^(.*)-m-([0-9]+).html$ index.php?manufacturers_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-pi-([0-9]+).html$ popup_image.php?pID=$2&%{QUERY_STRING}
RewriteRule ^(.*)-t-([0-9]+).html$ articles.php?tPath=$2&%{QUERY_STRING}
RewriteRule ^(.*)-a-([0-9]+).html$ article_info.php?articles_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-pr-([0-9]+).html$ product_reviews.php?products_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-pri-([0-9]+).html$ product_reviews_info.php?products_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-i-([0-9]+).html$ information.php?info_id=$2&%{QUERY_STRING}

#Deaktiviert
#RewriteRule ^[a-z0-9_-]+-p-([0-9]+)\.html$ product_info.php?products_id=$1 [NC,QSA,L]
#RewriteRule ^[a-z0-9_-]+-c-([0-9]+)\.html$ index.php?cPath=$1 [NC,QSA,L]
#RewriteRule ^[a-z0-9_-]+-m-([0-9]+)\.html$ index.php?manufacturers_id=$1 [NC,QSA,L]
normalerweise gehört das eigentlich in oscforum.. allerdings, ich weiss nicht.. ich finde da bekommt man ausser nutzt die suchfunktion keine vernüftigen antworten :( und falls es einem aufgefallen ist.. die meisten beiträge die darauf zu finden waren, stammen aus dem jahre 2003 u. 2004 :(

vielleicht hat ja einer von den pro's hier erbarmen und hat einen tip wie ich das lösen könnte..

grüsse & thx.

Verfasst:
von

Verfasst: 23.07.2006, 22:54
von Dendemann
Da du in deinen Wunsch-URLs keine Kategorienummern mehr drin hast, geht das ganze nicht ohne änderungen an osCommerce selbst. Ich hab vor einer Woche selbst ein gemoddetes osCommerce mit URLs wie oben ausgestattet, allerdings hat der Shop auch keine Unterkategorien.

Verfasst: 24.07.2006, 00:09
von Anakin
hmm.. du meinst so in der art:

https://www.domain.tld/DVD-Filme-c-3/
https://www.domain.tld/DVD-Filme/Scienc ... on-c-3-11/ ?

und mit unterkategorien ist das nicht machbar oder geht es hier nur um Aufwand?

und was ich noch fragen wollte SEO Technisch ist das besser wenn man direkt hinter der hauptdomain.de/ das ganze abhandelt statt weiter tiefer die Ebenen runter zu gehen?

bsp. domain.de/produkt.html
statt domain.de/kategorie/produkt.html

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

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 24.07.2006, 08:20
von Dendemann
Soweit ich mich hier bisher belesen habe, ist ein / (ebenso wie ein -) ein Trennzeichen für Google, was dazu führt, dass in

domain.de/kategorie/produkt.html

kategorie ein Keyword ist und somit bei einer Google suche nach "kategorie keyword" gefunden wird. Ist also besser, als die kategorie rauszulassen. Es entspricht auch mehr der Shoplogik, denn immerhin gehört das Produkt in diese kategorie, eine evtl. von Hand erstellte HTML-Produkt-Seite würde folgerichtig auch in diesem Verzeichnis "kategorie/" liegen.

Den ersten Punkt hast du richtig erfasst: Wen du keine aufwändige Umprogrammierung haben möchtest, musst du die Zielkategorie mit Nummer in die URL packen, so wie du das oben schon gemacht hast. Um die dann auszulesen, müsste man nun in der .htaccess das ganze in etwa so umschreiben (ungetestet):

Code: Alles auswählen

RewriteRule ^.*?-c-(\d+)/$ index.php?cPath=$1&%{QUERY_STRING}
Mit obigem Code hast du noch das Problem, dass Aufrufe von

domain.tld/DVD-Filme/Science-Fiction-c-3-11/index.php

zu einem 404 führen. Ich hab mich deshalb für den komplizierten Weg

Code: Alles auswählen

RewriteRule ^.*?-c-(\d+)(?:|/|/index\.[a-zA-Z]{3,4})$ index.php?cPath=$1 [QSA,L]
entschieden. Damit sind alle URLs der Form

domain.tld/kategorie-c-nn/
domain.tld/kategorie-c-nn/index.html
domain.tld/kategorie-c-nn/index.php
domain.tld/kategorie-c-nn/index.xyz
domain.tld/kategorie/subkategorie-c-nn/index.xyz
domain.tld/kategorie/subkategorie-c-nn/

gültig. Das Flag QSA steht für QueryStringAppend und ersetzt dein {QUERY_STRING}. Das L steht für Last, damit wird die .htaccess verlassen und es werden keine weiteren Regeln ausgeführt.

Ahtung: Der Quantifizierer '?' steht erst ab Apache 2.x zur Vefügung, da er zur Perl-Syntax gehört, die Apache 1.3.x nicht kennt.

Verfasst: 24.07.2006, 11:23
von Anakin
da bekomme ich einen Error 404 Fehler..

so sieht sie aus.

Code: Alles auswählen

Options +FollowSymLinks
RewriteEngine On 
RewriteBase /

RewriteRule ^.*?-c-(\d+)(?:|/|/index\.[a-zA-Z]{3,4})$ index.php?cPath=$1 [QSA,L]

RewriteRule ^(.*)-p-(.*).html$ product_info.php?products_id=$2&%{QUERY_STRING}
#RewriteRule ^(.*)-c-(.*).html$ index.php?cPath=$2&%{QUERY_STRING}
RewriteRule ^(.*)-m-([0-9]+).html$ index.php?manufacturers_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-pi-([0-9]+).html$ popup_image.php?pID=$2&%{QUERY_STRING}
RewriteRule ^(.*)-t-([0-9]+).html$ articles.php?tPath=$2&%{QUERY_STRING}
RewriteRule ^(.*)-a-([0-9]+).html$ article_info.php?articles_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-pr-([0-9]+).html$ product_reviews.php?products_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-pri-([0-9]+).html$ product_reviews_info.php?products_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-i-([0-9]+).html$ information.php?info_id=$2&%{QUERY_STRING}
ich hab diese Versionen im Einsatz:
HTTP Server: Apache/2.0.49 (Linux/SuSE)
PHP Version: 4.3.4 (Zend: 1.3.0)

Verfasst: 24.07.2006, 13:06
von Dendemann
Versuchs mal mit

Code: Alles auswählen

RewriteRule ^.*?-c-(\d+)(?:|/|/index\.[a-zA-Z]{3,4})$ /index.php?cPath=$1 [QSA,L]
Ansonsten setzt du mit

Code: Alles auswählen

ErrorDocument 404 /404.php
eine eigene 40-Seite ein, auf der du dir per

Code: Alles auswählen

<?php print_r&#40;$_SERVER&#41;; ?>
Die Serverdaten ausgeben lässt und solltest daran sehen, welche Datei genau nicht gefunden wurde (= in welche Datei die URL fälschlicherweise umgeschrieben wurde).

Verfasst: 27.07.2006, 20:24
von Anakin
Danke für die Info, habe jetzt einen programmierer beauftragt der mir das realisiert.
Machbar ist das, nur viel fummelei halt..

grüsse

Verfasst: 27.07.2006, 20:46
von Dendemann
Jepp, recht hast du ;) Ich durfte es ja selbst gerade umsetzen :p

Verfasst: 28.07.2006, 08:52
von bara.munchies
kann shopstat sowas nicht?
bei mir laufen die urls auf jeden fall so mit unterkategorie.

Verfasst: 30.07.2006, 18:50
von Anakin
also laut shopstat geht das auch für oscommerce, nur den shopstat selbst brauch ich nicht da man diese mit anderen contribs genauso realisieren kann. Vielleicht nicht das allergleiche aber ähnlich.

Bei mir zumindestens funzt es! Wenn ich mal fertig bin werde ich das mal hier online posten damit man das mal bewerten kann ;-)