OpenLD URL-rewrite und Umlaute

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

OpenLD URL-rewrite und Umlaute

Beitragvon Lonesome Walker » 26.02.2008 19:58

Ich bin meinem Ziel mittlerweile schon sehr nahe gekommen, jedoch weiß ich nicht, ob ich schon am Ziel bin, weil es technisch nicht realisierbar ist :roll:

Folgendes Szenario:

OpenLD in der Version 1.2
Linkverzeichnis ist auf UTF-8 eingestellt, Sprachdatei angepaßt.
Wenn ich jetzt den Rewrite aktiviere, dann wird folgende Datei geparst:

Code: Alles auswählen
<?php

$dot_htaccess = 'RewriteEngine On

RewriteRule ^dir/([0-9]+)/(.+)/([0-9]+)$ index.php?id=$1&category=$2&page=$3
RewriteRule ^search/(.+)/(.+)/(.+)/(.+)/([0-9]+)$ search.php?term=$1&search_in=$2&sort_by=$3&search_type=$4&page=$5

RewriteRule ^suggest_category/([0-9]+)/(.+)$ suggest_category.php?id=$1&category=$2
RewriteRule ^submit/([0-9]+)/(.+)$ submit.php?id=$1&category=$2
RewriteRule ^dir/([0-9]+)/(.+)$ index.php?id=$1&category=$2
RewriteRule ^search/(.+)/(.+)/(.+)/(.+)$ search.php?term=$1&search_in=$2&sort_by=$3&search_type=$4';

// Bis hier ist der Inhalt der generierten .htaccess
// d.h. das Script generiert aus dem oberen Teil die .htaccess, und schreibt sie einmalig ins Verzeichnis


$openld_url['suggest'] = 'suggest_category/#1/#2';
$openld_url['submit'] = 'submit/#1/#2';
$openld_url['index_cat'] = 'dir/#1/#2';
$openld_url['search'] = 'search/#1/#2/#3/#4';
$openld_url['index_cat_page'] = $openld_url['index_cat']. '/#p';
$openld_url['search_page'] = $openld_url['search']. '/#p';


function se_suggest($arg_array)
{
    if(isset($arg_array['id']) && isset($arg_array['category']))
// hier habe ich die Umlaute schön artig per preg_replace berücksichtigt
        return array($arg_array['id'], preg_replace("/[^ä|Ä|ö|Ö|ü|ý|ß|äöüßa-zA-Z0-9\s]+/", '-', $arg_array['category']));

    global $openld_url;
    $openld_url['suggest'] = 'suggest_category.php';
    return null;
}


function se_submit($arg_array)
{
    if(isset($arg_array['id']) && isset($arg_array['category']))
        return array($arg_array['id'], preg_replace("/[^ä|Ä|ö|Ö|ü|ý|ß|äöüßa-zA-Z0-9\s]+/", '-', $arg_array['category']));

    global $openld_url;
    $openld_url['submit'] = 'submit.php';
    return null;
}

function se_index_cat($arg_array)
{
    if(isset($arg_array['id']) && isset($arg_array['title']))
        return array($arg_array['id'], preg_replace("/[^ä|Ä|ö|Ö|ü|ý|ß|äöüßa-zA-Z0-9\s]+/", '-', $arg_array['title']));

    global $openld_url;
    $openld_url['index_cat'] = 'index.php';
    return null;
}


function se_search($arg_array)
{
    global $db;
    $arg_array = $db->escape_array($arg_array);

    if(isset($arg_array['term']) && isset($arg_array['search_in']) && isset($arg_array['sort_by']) && isset($arg_array['search_type']))
        return array($arg_array['term'], $arg_array['search_in'], $arg_array['sort_by'], $arg_array['search_type']);

    global $openld_url;
    $openld_url['search'] = 'search.php';
    return null;
}


So, wenn ich jetzt im IE die Seite aufrufe, werden alle Links ordnungsgemäß angezeigt und geparst.
Der Firefox macht mir aber einen Strich durch die Rechnung, und scrambled die URL natürlich wieder...
Opera hält es wie Internet Explorer, alles korrekt.

Ist das nun ein Problem im Firefox?

Mein Ziel wäre es, die URLs in allen Browsern mit ä, ö, ü und ß zu sehen, und das da oben, naja, da stimmt was nicht so ganz, denn wenn ich ä aus dem preg_replace entferne, dann habe ich Ärger, und wenn ich es UTF-8-codiert entferne, geht es auch nicht richtig.
Kann aber doch nicht sein, oder???
Außerdem dachte ich, daß die Leerzeichen auch entfernt werden, sie generieren mir aber noch immer ein %20.

Hat jemand einen Wink, was ich da falsch mache?
Lonesome Walker
.
.
 
Beiträge: 10
Registriert: 09.01.2007 13:33

Beitragvon crashbraker » 16.04.2009 12:26

Hallo,

kannst du mir denn sagen was hier drin steht ???

Code: Alles auswählen
preg_replace("/[^ä|Ä|ö|Ö|ü|ý|ß|äöüßa-zA-Z0-9\s]+/", '-',


Kann das nicht entziffern nur vermuten.

Ich vermute "äöüß" -> sind 4 Buchstaben aber dort oben sind 7 Buchstaben.

Bitte um kurzfristigen Antwort !!!

MfG
Crashbraker
crashbraker
.
.
 
Beiträge: 89
Registriert: 27.05.2008 21:08
Wohnort: Essen

Beitragvon Lonesome Walker » 16.04.2009 12:41

Laß mal den preg auf UTF8 durchlaufen...

PS: Deine www-Adresse ist ja stark abmahn-gefährdet... solltest vielleicht mal ändern...
Lonesome Walker
.
.
 
Beiträge: 10
Registriert: 09.01.2007 13:33

Beitragvon crashbraker » 16.04.2009 20:51

Hallo Lonesome Walker,

danke für dein Info aber was meinst du mein "www" Adresse sei stark abmahn-gefährdet ???
Leider funktioniert das trotzdem mit UTF-8 bei mir nicht.
Denn diese vermutung hatte ich auch und habe es auf UTF-8 umgestellt und konnte wiederum einige Zeichen davon nicht mehr erkennen.
Daher wäre ich euch sehr dankbar, wenn ihr mir die Zeichensetzung kurz mal nennen würdet !!!

Gruß
Crashbraker
crashbraker
.
.
 
Beiträge: 89
Registriert: 27.05.2008 21:08
Wohnort: Essen

Beitragvon Lonesome Walker » 16.04.2009 23:43

Da unter Deinem Beitrag ist ein Button, der da lautet: Email (und da extrahierst Du mal den Domain-Part...)

Bei mir funktioniert das tadellos.
Das Problem, welches ich oben genannt hatte, ist browserbasierend, d.h. der eine kann es, der andere nicht.
Je nach Sonderzeichen muß man den preg_replace logischerweise anpassen.
Ich habe lediglich äöüß berücksichtigt, denn mehr brauche ich in meinen URL's nicht.
Lonesome Walker
.
.
 
Beiträge: 10
Registriert: 09.01.2007 13:33

Beitragvon Gumbo » 17.04.2009 13:03

Wie sind denn die Daten kodiert und mit welcher Kodierung werden sie ausgeliefert? Die meisten Browser stellen nämlich nur bei UTF-8 (wenn also die URL selber UTF-8-kodiert ist) die Zeichen selber und nicht die URL-kodierte Repräsentation dar.
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon crashbraker » 17.04.2009 13:16

Lonesome Walker hat geschrieben:Da unter Deinem Beitrag ist ein Button, der da lautet: Email (und da extrahierst Du mal den Domain-Part...)

Bei mir funktioniert das tadellos.
Das Problem, welches ich oben genannt hatte, ist browserbasierend, d.h. der eine kann es, der andere nicht.
Je nach Sonderzeichen muß man den preg_replace logischerweise anpassen.
Ich habe lediglich äöüß berücksichtigt, denn mehr brauche ich in meinen URL's nicht.



Hallo Lonesome Walker,

hm also das mit dem Email Button oder wie du das meintest habe ich überhaupt nicht verstanden !!!
Wenn ich auf dem Button Email klicke, öffnet sich bei mir der Email Client wo ich dann einfach ein Email abschicken kann.
Was hat das mit dem Inhalt dieser Seite zutun ???

Kannst du mir das bitte genauer erklären ???

Gruß
Crashbraker
crashbraker
.
.
 
Beiträge: 89
Registriert: 27.05.2008 21:08
Wohnort: Essen


Zurück zu Programmierung & Scriptanpassung für mod_rewrite

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron