ich stolpere gerade über eine Standard- Aufgabe oder vielleicht denke ich in die falsche Richtung:
Ich benutze REXSEO zum Umschreiben der URL's.
Das funktioniert für die Redaxo- eigene Struktur wunderbar.
Jetzt habe ich ein Projekt, wo in einem Bereich die Daten über ein eigenes Addon aus der Datenbank geholt werden.
Dazu gibt es z.B. die üblichen Parameter "id" und "name"
"lexikon?id=2384&name=hans+wurst"
mit Parameter Rewrite wird daraus: "lexikon/++/2384/hans+wurst"
Kann man den Rexseo Parameter Rewrite nur für einen Teil der Webseite (z.B. eine Kategorie) einschalten und wenn möglich das Trennzeichen ++ weglassen, da der Name der (einmaligen) Kategorie als Trenner erkannt werden kann? Also Kategorie = lexikon und url= lexikon/id/name, wobei der Name zum Abruf der Daten egal ist (nur für SEO).
Wie das Umschreiben der URL über den REXSEO_PATHLIST_CREATED geht, hab ich soweit verstanden.
Mein Problem ist, dass es sich diesmal um 200 000 Datensätze handelt. Kann mir nicht vorstellen, die in eine Pathlist zu schreiben.
Das extrahieren der Parameter aus der URL kann man im entsprechenden Artikel natürlich selbst machen aber ich müsste auch alle URLs dorthin ohne rex_getURL zusammenbauen. Ist das der übliche Weg?
Vielleicht sehe ich das wieder zu kompliziert und es ist ganz einfach, bitte mal um einen Wink
mit Dank im Voraus
Thomas
Hallo,
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Re: Rexseo, rewriting der Parameter und Kategorie als Trenne
Nein.Thomas-S hat geschrieben:Kann man den Rexseo Parameter Rewrite nur für einen Teil der Webseite (z.B. eine Kategorie) einschalten ..
Yup, der Weg über die pathlist ist bei der Menge nicht gangbar.. der RAM Bedarf wäre ziemlich sicher zu hoch, und selbst wenn der Server das hergäbe, wärs imho nicht sinnvoll.Thomas-S hat geschrieben:.. 200 000 Datensätze handelt. Kann mir nicht vorstellen, die in eine Pathlist zu schreiben.
Es gibt keinen üblichen Weg.. ;) Ich würde in dem Fall folgendes mal probieren:Thomas-S hat geschrieben:Das extrahieren der Parameter aus der URL kann man im entsprechenden Artikel natürlich selbst machen aber ich müsste auch alle URLs dorthin ohne rex_getURL zusammenbauen. Ist das der übliche Weg?
Ein plugin bauen (Rexseo 1.5.x), welches sich beim EP URL_REWRITE einhängt.. im EP auf die article_id checken, und wenn es die deines DB Ausgabe Artikels ist, anhand der Parameter deinen eigenen rewrite basteln.. da das Plugin vor dem Rexseo Haupcode (sprich dessen rewrite) ausgeführt wird, macht Rexseo dann keinen weiteren rewrite mehr, weil in URL_REWRITE schon einer gemacht wurde.
Für die Auflösung der URL würde ich - da nicht über die pathlist möglich - den EP REXSEO_ARTICLE_ID_NOT_FOUND nehmen.. dort zerlegst du die unbekannte URL (sofern sie deinem Schema entspricht), und ermittelst article_id und params..
Das ist jetzt ungetestet/theoretisch, aber ich denke so oder ähnlich sollte das eigentlich klappen..
vg, Jan
Re: Rexseo, rewriting der Parameter und Kategorie als Trenne
Ein relativ einfacher Weg wäre, sich einfach selbst um das Rewriting zu kümmern.
Du schreibst dir einfach eine Rewriteregel:
Wenn die Namen eindeutig definiert sind, kannst du die ID sogar noch weglassen:
Jetzt musst du dich zwar selbst um den Aufbau der URLs kümmern, das dürfte aber bei solch einer einfachen Struktur relativ einfach sein.
Du schreibst dir einfach eine Rewriteregel:
Code: Alles auswählen
RewriteRule lexikon/(\d+)/([^/]+)/? lexikon?id=$1&name=$2
Code: Alles auswählen
RewriteRule lexikon/([^/]+)/? lexikon?name=$1
Re: Rexseo, rewriting der Parameter und Kategorie als Trenne
@jeandeluxe, danke für den Tipp!
habe mich in URL_REWRITE eingeklinkt und schreibe die URL um, wenn die Artikel_ID = 6 ist.
einfache Variante aber funktioniert schon:
nochmal zur Auflösung der URL:
Wäre es trotzdem besser über REXSEO_ARTICLE_ID_NOT_FOUND zu gehen?
@Xong
wenn ich die URLs mit der Methode oben umschreibe und die Auflösung über Deine RewriteRule mache? Die parameter Urls mit ?id=xxx&name=xxxx funktionieren ja noch....
habe mich in URL_REWRITE eingeklinkt und schreibe die URL um, wenn die Artikel_ID = 6 ist.
einfache Variante aber funktioniert schon:
Code: Alles auswählen
function special_url($params) {
$urlparams = '';
// url nur umschreiben wenn article_ID = 6
if ($params['id']=='6') {
// params liegen nicht als array vor, müssen separiert werden
$paramstring = split('&', $params['params']);
foreach ($paramstring as $value) {
if (substr($value, 0, 3) == 'id=') $urlparams .= (substr($value, 3)).'/';
if (substr($value, 0, 5) == 'name=') $urlparams .= (substr($value, 5)).'/';
}
// params an url anhängen
return 'lexikon/'.$urlparams;
}
}
$params = '';
rex_register_extension('URL_REWRITE','special_url',$params);
wenn ich "lexikon/1355/lala" eingebe und in rexseo Einstellungen "artikel mit ähnlichster URL anzeigen" eingestellt habe, lande ich schon auf der lexikon- Seite und könnte die URL im Modul des Artikels zerlegen.Für die Auflösung der URL würde ich - da nicht über die pathlist möglich - den EP REXSEO_ARTICLE_ID_NOT_FOUND nehmen.. dort zerlegst du die unbekannte URL (sofern sie deinem Schema entspricht), und ermittelst article_id und params..
Wäre es trotzdem besser über REXSEO_ARTICLE_ID_NOT_FOUND zu gehen?
@Xong
wenn ich die URLs mit der Methode oben umschreibe und die Auflösung über Deine RewriteRule mache? Die parameter Urls mit ?id=xxx&name=xxxx funktionieren ja noch....
Re: Rexseo, rewriting der Parameter und Kategorie als Trenne
Wenn du ähnlichste URL generell benutzten willst bietet sich xongs Lösung für den resolve eher an. Zum einen läufst du mit ähnlichster URL Gefahr evtl. mal nicht im gewünschten Artikel rauszukommen, zum anderen ist das dann nicht sonderlich performant.. erst Rexseo rumsuchen lassen, und dann nochmal im eigenen code den resolve abfeiern.. dann lieber gleich die Umleitung incl. Auflösung der params nehmen.. so wie xong das skizziert hat.Thomas-S hat geschrieben:wenn ich "lexikon/1355/lala" eingebe und in rexseo Einstellungen "artikel mit ähnlichster URL anzeigen" eingestellt habe, lande ich schon auf der lexikon- Seite und könnte die URL im Modul des Artikels zerlegen. Wäre es trotzdem besser über REXSEO_ARTICLE_ID_NOT_FOUND zu gehen?
vg, Jan
Re: Rexseo, rewriting der Parameter und Kategorie als Trenne
Der Vollständigkeit halber: es gäbe noch nen Weg den standard rewrite der params zu manipulieren: via dem EP REXSEO_POST_REWRITE .. dort bekommt man im EP sowohl das Ergebnis von Rexseos Bemühungen, als auch die Rohdaten. Die Abkürzung mit dem Vorwegnehmen des rewrites via URL_REWRITE ist performanter, aber es mag Fälle geben wo dieser EP von Vorteil ist..
vg, Jan
Re: Rexseo, rewriting der Parameter und Kategorie als Trenne
http://googlewebmastercentral.blogspot. ... -urls.html
http://www.youtube.com/watch?v=M6TBM828clM
Wenn du 2 Parameter hast wird Google die genausogut indizieren/ ranken/ whatever wie eine pseudo-pfad URL mit einer numerischen ID drin. Wär schon traurig, wenn die dazu nicht in der Lage wären. Deshalb würde ich mir den Wiggel schenken, da tust du keinem einen Gefallen mit.
http://www.youtube.com/watch?v=M6TBM828clM
Wenn du 2 Parameter hast wird Google die genausogut indizieren/ ranken/ whatever wie eine pseudo-pfad URL mit einer numerischen ID drin. Wär schon traurig, wenn die dazu nicht in der Lage wären. Deshalb würde ich mir den Wiggel schenken, da tust du keinem einen Gefallen mit.
Re: Rexseo, rewriting der Parameter und Kategorie als Trenne
ich bräuchte noch einen kleinen Tipp.
die Rule von Xong funktioniert nur, wenn ich die Genauigkeit von REXSEO auf "Artikel mit ähnlichster URL" stelle.
Ich könnte in der Rule auf die artikel ID weiterzuleiten, das funktioniert, aber dann muss ich in rexseo den Aufruf via article_id zulassen ;-(
die Rule von Xong funktioniert nur, wenn ich die Genauigkeit von REXSEO auf "Artikel mit ähnlichster URL" stelle.
Bei der Ausgabe von $_SERVER sehe ich erst mal nicht woran es liegt, der REDIRECT_QUERY_STRING ist korrekt. Spielt rexseo noch eine Rolle dabei?RewriteRule lexikon/(\d+)/([^/]+)/? lexikon?id=$1&name=$2
Ich könnte in der Rule auf die artikel ID weiterzuleiten, das funktioniert, aber dann muss ich in rexseo den Aufruf via article_id zulassen ;-(
bin mir auch noch nicht sicher ob ich diese Rule in der htaccess an der richtigen Stelle habe. Wenns zu weit unten eingefügt wird, gibt er manchmal die .js und .css Files als Text aus.RewriteRule lexikon/(\d+)/([^/]+)/? index.php?article_id=6&au_ID=$1&name=$2
Re: Rexseo, rewriting der Parameter und Kategorie als Trenne
sorry, hab das eben erst kapiert.
"Genauigkeit" bedeutet ja, dass die URL mit der URL in der Pathlist verglichen wird, was bei meiner generierten URL natürlich nicht der Fall ist.
Also bleibt nur entweder Genauigkeit mit "ähnlichster" (wobei ich da nicht weiß was das für "Nebenwirkungen" hat) oder redirect auf article_id und diese im "Aufruf via article_id" zulassen.
Die Möglichkeit eines Platzhalterzeichens am Ende einer Custom URL eines Artikels wäre super
danke für die Hilfe
Thomas
"Genauigkeit" bedeutet ja, dass die URL mit der URL in der Pathlist verglichen wird, was bei meiner generierten URL natürlich nicht der Fall ist.
Also bleibt nur entweder Genauigkeit mit "ähnlichster" (wobei ich da nicht weiß was das für "Nebenwirkungen" hat) oder redirect auf article_id und diese im "Aufruf via article_id" zulassen.
Die Möglichkeit eines Platzhalterzeichens am Ende einer Custom URL eines Artikels wäre super
danke für die Hilfe
Thomas
Re: Rexseo, rewriting der Parameter und Kategorie als Trenne
Hi Thomas,
eigentlich müsste es schon reichen, wenn du einfach den Slash hinzufügst, damit auf die exakte URL weitergeleitet wird:
eigentlich müsste es schon reichen, wenn du einfach den Slash hinzufügst, damit auf die exakte URL weitergeleitet wird:
Code: Alles auswählen
RewriteRule lexikon/(\d+)/([^/]+)/? lexikon/?id=$1&name=$2
Re: Rexseo, rewriting der Parameter und Kategorie als Trenne
Hallo Xong,
vielen Dank für Deinen Support (fällt selbst mir als sporadischem Besucher hier im Forum immer wieder auf)
Soweit ist mir das klar. Jetzt gibt es wieder verschiedene Möglichkeiten.
- Aufruf per article_id grundsätzlich zulassen, aber dafür sorgen, dass die canonical url in Metatags immer eine url mit umgeschriebenen Pfad und inkl. Parametern ist.
- Die Klasse erweitern und
- - den Vergleich mit der Pathlist abfangen und diesen Path als Ausnahme behandeln
- - Aufruf via article_id für diesen Pfad zulassen
- ?
Viele Grüße
Thomas
vielen Dank für Deinen Support (fällt selbst mir als sporadischem Besucher hier im Forum immer wieder auf)
Das funktioniert leider nicht.Ich glaube da kannst Du eintragen, was Du willst. Denn REXSEO vergleicht ganz zu Beginn der rewrite-Klasse die $_SERVER['REQUEST_URI'] mit der Pathlist. Vorher wird sie noch nach ? und # gesplittet. In der Pathlist steht /lexikon aber die REQUEST_URI lautet trotz rewrite-Rule /lexikon/xxx/xxxxx. Deshalb auch die Sache mit dem "Abtrenner" für Parameter.eigentlich müsste es schon reichen, wenn du einfach den Slash hinzufügst, damit auf die exakte URL weitergeleitet wird
Soweit ist mir das klar. Jetzt gibt es wieder verschiedene Möglichkeiten.
- Aufruf per article_id grundsätzlich zulassen, aber dafür sorgen, dass die canonical url in Metatags immer eine url mit umgeschriebenen Pfad und inkl. Parametern ist.
- Die Klasse erweitern und
- - den Vergleich mit der Pathlist abfangen und diesen Path als Ausnahme behandeln
- - Aufruf via article_id für diesen Pfad zulassen
- ?
Viele Grüße
Thomas