Ich möchte gerne meine Produkt-URLs von meinem OpenCart Webshop umschreiben. Opencart selbst hat eine SEO-Implementierung, die wirklich nervt. Ich habe die SEO-Implementierung aktualisiert, um dasselbe Keyword für mehrere Kategorien verwenden zu können. Siehe: Opencart-Schlüsselwörter für doppelte URLs Aber das funktioniert nur für die Kategorien. Für die Produkte würde ich nur eine htaccess rewrite Regel brauchen, denke ich.
Die ursprüngliche URL sieht so aus:
http://domain.com/index.php?route=product/product&path=25_28_93&product_id=1759
meine URL sieht im Moment so aus:
http://domain.com/In-Stock/Retreaded-Tires/Agricultural?product_id=1759
Wie Sie sehen können, haben sich die Kategorien bereits geändert.
Und ich möchte, dass es so ist:
http://domain.com/In-Stock/Retreaded-Tires/Agricultural/1759/1050-50R32-Mega-X-Bib
Dann für Paginierung (innerhalb einer Kategorie) habe ich diese URL:
http://domain.com/index.php?route=product/category&path=36_70_67&page=2
Ich habe das schon gemacht:
http://domain.com/Tire-Retreading/Equalizing/&page=2
Aber ich möchte, dass es so ist
http://domain.com/Tire-Retreading/Equalizing/2
Meine htaccess-Datei sieht so aus:
%Vor%Meine seo_url.php Datei, die etwas verändert ist, sieht so aus:
%Vor%Der Paginierungscode ist wie folgt:
%Vor%BEARBEITEN:
Alle meine Seiten werden zu Ссылка weitergeleitet
Von dort entscheidet es, welches Verzeichnis / welche Datei vom Routenparameter verwendet werden soll.
Also route=product/product
sagt das geht zum product.php
innerhalb des Verzeichnisprodukts. Das Verzeichnisprodukt enthält auch categories.php
, was zu einer Route führt: route=product/category
Die Path-Variable aus der Zeichenfolge repräsentiert die ID einer Kategorie. In meinem Beispiel steht 25
für In-Stock
. Und 25_28
steht für In-Stock/Retreaded-Tires
etc.
Die Variable product_id
repräsentiert die entsprechende ID für das Produkt.
Die Seitenvariable steht für die Seitennummerierung und wird in der Liste der Produkte innerhalb einer Kategorie verwendet. Diese Liste kann eine variable Länge haben, wenn berechnet wird, wie viele Produkte sich innerhalb einer Kategorie befinden und wie viele Produkte auf einer Seite angezeigt werden sollen.
Wenn also die ursprüngliche URL &page=2
mit der Route route=product/category
hat, sollte sie eine URL wie folgt machen: http://domain.com/Tire-Retreading/Equalizing/2
Ich finde die zusätzlichen Erklärungen immer noch verwirrend und es hört sich für mich so an, als wüssten Sie nicht genau, wie URL-Rewriting funktioniert, also werde ich versuchen, einige Grundlagen zum Umschreiben von URLs zu erklären
Was Sie mit URL-Neuschreiben tun können, ist die Übersetzung 'hübscher' URL Segmente (von URLs, die dem Benutzer angezeigt werden) in Segmente Ihrer tatsächlichen, langen "nicht-hübsche" URLs (die Variablen verwenden, um bestimmte Inhalte zu bedienen). Sie tun dies, indem Sie reguläre Ausdrücke verwenden, um die hübschen Segmente zu vergleichen, und dann entweder Ihren PHP-Variablen vordefinierte Werte oder diese angepassten Werte geben.
Also, was Sie zuerst tun, ist herauszufinden, wie Ihre hübschen URLs aussehen sollten und wie sich ihre einzelnen Segmente auf Ihre Variablen auswirken. (Sie können natürlich auch eine beliebige Anzahl neuer Variablen verwenden, deren Werte Sie dann in bereits vorhandene oder vordefinierte Variablen in Ihren PHP-Skripten konvertieren und zuweisen können.)
Sie haben dieses Beispiel angegeben: Ссылка
Diese URL besteht anscheinend aus drei Teilen, die Sie in Variablen übersetzen möchten:
Tire-Retreading
(Variable route
) Equalizing
(Variable path
) 2
(Variable page
) Sie müssen Ihre RegEx erstellen, um Ihre Segmente basierend auf allen möglichen Arten zu schreiben, die die einzelnen Segmente buchstabieren können, einschließlich aller Sonderzeichen, die erlaubt sind usw. Sobald das erledigt ist, können Sie die übereinstimmenden Werte an Ihre Variablen übergeben Verwenden einer Rückreferenz (oder Sie könnten eigene Werte definieren, die von Ihren Variablen verwendet werden).
Unter Verwendung von Rückverweisen können Sie möglicherweise Folgendes verwenden:
%Vor% Sie müssen die einzelnen RegEx für die Segmentübereinstimmung (wie [A-Za-z-]+
) in runden Klammern setzen, um die Ergebnisse Ihren PHP-Variablen in Form von ,
usw. zuordnen zu können / p>
Je nachdem, ob Benutzern auch erlaubt werden sollte, die Übersichtsseiten für Ihre Produkte / Kategorien oder Pfade zu durchsuchen, müssen Sie möglicherweise das Umschreiben von der kleinstmöglichen "hübschen" URL zur längsten starten.
z. B.
%Vor%Das Umschreiben für die Domäne selbst wird vor dem Umschreiben des Pfades ausgeführt.
Sie müssen auch herausfinden, welche Flags - das Teil in eckigen Klammern am Ende - Sie verwenden müssen, was bedeutet, dass Sie auf Umschreiben von URLs genauer. Im obigen Beispiel werden alle URLs, die der Benutzer eingibt, die nicht mit einem Schrägstrich enden, automatisch auf dieselbe URL umgeleitet (dafür steht das R
in eckigen Klammern), jedoch mit einem zusätzlichen Schrägstrich. Also würde http://example.com/blah
zu http://example.com/blah/
etc. Umleiten.
Basierend auf den von Ihnen angegebenen Informationen haben Sie URLs, die mit einem von zwei möglichen Segmenten beginnen:
%Vor%gegen
%Vor% Sie müssen also besonders darauf achten, dass diese beiden nicht verwirrt werden. Wenn In-Stock
in eine eigene Variable geleitet wird und immer genau so geschrieben wird, möchten Sie wahrscheinlich, dass Ihre ersten Regeln damit umgehen und die RegEx verwenden, um die Produkte / Kategorien erst später zu finden (alle Umschreibungsregeln werden behandelt) chronologisch, eine nach der anderen).
Ich hoffe, das hilft.
Tags und Links php url .htaccess mod-rewrite opencart