Seite 2, 3......

Wie wir alle wissen (sollten) ändert mod_rewrite keine Links im Script. Damit auch die Links auf Deiner Page auf die neuen "Rewrited URLs" zeigen bedarf es der Anpassung im Code. Fragen und Probleme rund um's Coding werden hier diskutiert.

Moderator: Super-Mod

Seite 2, 3......

Beitragvon BlackOut » 20.07.2009 07:32

Servus allerseits ;)

Ich befasse mich nun schon einige Zeit mit mod_rewrite und stehe nun vor einer mir nicht lösbaren Aufgabe.

Hier erstmal mein Script:

Code: Alles auswählen
<?
if (!defined("IN_FUSION")) { die("Access Denied"); }
function furl($buffer) {
   
$buffer = preg_replace('#<a href=\'downloads\.php\?cat_id=([0-9]+)\'>(.*?)</a>#sie', "'<a href=\'download_'.clean_furl('\\2').'_\\1.html\' title=\'\\2\'>\\2</a>'", $buffer);

$buffer = preg_replace('#<a href=\'downloads\.php\?cat_id=([0-9]+)(&|&amp;)rowstart=([0-9]*?)\'>(.*?)</a>#sie', "'<a href=\'download_'.clean_furl('\\1').'_\\1.html\' title=\'\\4\'>\\4</a>'", $buffer);


    return $buffer;

}

function clean_furl($title) {

       $search = array("ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "€", "RE:-");
      $replace = array("ae", "Ae", "ue", "Ue", "oe", "Oe", "ss", "euro", "" );
      $title = str_replace($search, $replace, $title);;
      $title = preg_replace("/[^\d\w]+/", "-", $title);
      $title = trim($title, "-");
      $title = strtolower($title);
      
      return $title;

}

add_handler("furl");
?>


Auf die erste Seite gelangt man mit der Umleitung ohne Probleme.

Nun ist mir aber nicht bekannt. wie ich mod_rewrite nun einsetze wenn ich nun von Seite 1 auf Seite 2 geh.

Ein Beispiel habe ich euch mal hochgeladen. Klick Me Geht da mal auf "Downloads" ---> "Download Kategorie 1".

Bis dahin ist alles schon fertig. Nun klickt mal auf Seite 2 da wird dies mit "rowstart" bestimmt.

Ich dachte mir ich Löse das indem ich mein Script folgender Massen anpasse :

Code: Alles auswählen
$buffer = preg_replace('#<a href=\'downloads\.php\?cat_id=([0-9]+)(&|&amp;)rowstart=([0-9]*?)\'>(.*?)</a>#sie', "'<a href=\'download_'.clean_furl('\\1').'_\\1.html\' title=\'\\4\'>\\4</a>'", $buffer);


Da setzt der mir den Link auf "http://seo.2good4name.de/download_1_1.html".

Kann mir wenn einen Tipp geben wie ich die URL auflösen muss, das am Ende "http://seo.2good4name.de/download_download-kategorie-1_seite_2__1.html" bei raus kommt.

Thx schonmal im vorraus

Gruß Black
BlackOut
.
.
 
Beiträge: 5
Registriert: 11.06.2009 17:10

Beitragvon Gumbo » 20.07.2009 15:50

Wieso machst du das überhaupt so umständlich? Wieso wendest du nicht gleich eine Funktion an, die dir die richtigen URLs ausspuckt?
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon BlackOut » 20.07.2009 20:07

Servus Gumbo,

wie soll ich das denn sonst machen. Es gibt da schon ein ähnliches Script und der hat dies da auch so gemacht das habe ich mir so als Vorlage genommen.

Aber da wurde dies nicht mit eingebunden wenn man eine Seite wechselt. Ich denke das muss so gemacht werden, damit man an dem Quellcode des CMS nichts verändern muss.

PS. Wie würdest du das denn machen ?
BlackOut
.
.
 
Beiträge: 5
Registriert: 11.06.2009 17:10

Beitragvon Gumbo » 20.07.2009 20:20

Am besten wäre es, wenn deine Anwendung die neuen URLs von selbst versteht. Das heißt, sie weiß, was beispielsweise „/download_1_1.html“ tatsächlich bedeutet und ist nicht auf die parametrisierte Anfrage „/downloads.php?cat_id=1&rowstart=1“ angewiesen.

Denn du kannst besser nur die eine URL bei der Anfrage umformen („/download_1_1.html“ → „/downloads.php?cat_id=1&rowstart=1“) als dies ständig mit alle auf einer Webseite vorkommenden URLs zu machen („/downloads.php?cat_id=1&rowstart=1“ → „/download_1_1.html“).
Der Unterschied bei einer Anfrage einer Webseite mit zehn URLs entspricht dabei einer einzigen Umformung (der der angefragten URL) gegenüber zehn Umformungen (der der darin vorkommenden URLs).
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon BlackOut » 20.07.2009 20:26

thx für deine Antwort aber ich verstehe nicht so recht wie du das meinst.

Willst du sagen das ich jede URL einzeln anlegen soll in der .htaccess?
BlackOut
.
.
 
Beiträge: 5
Registriert: 11.06.2009 17:10

Beitragvon Gumbo » 20.07.2009 20:44

Nein, gerade das nicht. Ich wollte vielmehr sagen, dass die Anwendung bereits die neuen URLs ausgeben und diese dann auch wieder selbstständig verarbeiten können sollte. Dass also bereits „/download_1_1.html“ ausgegeben wird und eine Anfrage von „/download_1_1.html“ auch von der Anwendung wieder richtig verstanden und verarbeitet wird.
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon BlackOut » 20.07.2009 20:56

Das wird es doch und das ist nicht mein Problem. Mein Problem ist es das ich das den Kategorienamen nicht in die URL bei der nächsten Seite bekomme.

$buffer setzt die anderen URL aus dem CMS ausser Kraft und setzt die dann in "download_download-kategorie-1_1.html" aber nicht Weiter in "download_download-kategorie-1_Seite_2_1.html"
BlackOut
.
.
 
Beiträge: 5
Registriert: 11.06.2009 17:10

Beitragvon BlackOut » 21.07.2009 00:41

hat sich erledigt, habe ne Möglichkeit gefunden.

bis dann
BlackOut
.
.
 
Beiträge: 5
Registriert: 11.06.2009 17:10


Zurück zu Programmierung & Scriptanpassung für mod_rewrite

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast