[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
url_rewrite - Was macht das "+" da? - REDAXO Forum
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/
Merchenman
Beiträge: 53
Registriert: 26. Jan 2007, 18:11
Wohnort: Marbella
Kontaktdaten: Website

url_rewrite - Was macht das "+" da?

30. Apr 2009, 12:46

Ich hab gerade auf Redaxo 4.2 upgedatet, aber bis jetzt bin ich leider noch nicht wirklich zugfrieden. Mit dem neuen url_rewrite sind die Links erstens doppelt und zweitens haben die ein "+" (plus) anstatt dem "_". Das ist jetzt natürlich ziemlich dämlich, da ich nicht die ganzen Links meiner Seite verändern kann.

Ein Link sieht damit wie folgt aus:
http://www.domain.com/real+estate/real+estate.html

Folgendes Problem, ein Link der vorher lautete:
http://www.domain.com/real_estate
ist jetzt nicht mehr verfügbar, und geht zur Homepage. Das ist absolut nicht akzeptabel, da alle externen Links die ich habe nicht mehr funktionieren würden. Damit wäre ein Update auf Redaxo 4.2 unmöglich.

Wie kann ich das wieder so haben wie vorher???

nente
Beiträge: 46
Registriert: 25. Apr 2007, 13:49

30. Apr 2009, 14:56

sieht so aus als wäre bei dir rewrite-fullnames aktiv...

schau mal in die datei
/redaxo/include/addons/url_rewrite/config.inc.php

dort Zeile 24/25:
// Modify this line to include the right rewriter
require_once $UrlRewriteBasedir.'/classes/class.rewrite_fullnames.inc.php';

den include ändern in:
class.rewrite_mod_rewrite.inc.php
oder
class.rewrite_simple.inc.php

Beide Dateien sollten im Ordner ./classes/ vorhanden sein.

hoffe das ist was du gesucht hast.

Benutzeravatar
Oliver.Kreischer
Beiträge: 2508
Registriert: 17. Dez 2004, 00:03
Wohnort: Velbert - LA
Kontaktdaten: Website

30. Apr 2009, 15:19

Hi,

das + hat mich auch sehr gewundert. Ich hab die Änderungen dann in der .htaccess gemacht. Eigentlich recht dumm von mir. Eine funktionierende Google Sitemap hab ich jetzt gerade nicht.

Ich werd die URLs wohl wieder umstellen. Google wird sich freuen....

Das mir dem + wüde ich gerne mal erklärt haben. So wie ich es kenne gehört es nicht zu den erlaubten Zeichen innerhalb einer Domain (auch wenn es Google nicht stört) und bei denen würde ich am liebsten bleiben.

Sehr gerne lerne ich natürlich dazu!

Viele Grüße
Oliver
> Friends Of REDAXO Gemeinsame REDAXO-Entwicklung!
> REDAXO Agenturen. Eintragen erwünscht!
> Komm in den Slack Channel Es lohnt sich!

nente
Beiträge: 46
Registriert: 25. Apr 2007, 13:49

30. Apr 2009, 15:26

ah, jetzt *g*

innerhalb einer domain ist das + nicht erlaubt aber in einem pfad schon.

die vermutung liegt nahe, dass hier urlencode() anstatt rawurlencode() verwendet wurde, unterschied:

echo urlencode("test test"); => "test+test"

echo rawurlencode("test test"); => "test%20test"

rawurlencode enkodiert nach RFC1738, urlencode nicht.

Benutzeravatar
Oliver.Kreischer
Beiträge: 2508
Registriert: 17. Dez 2004, 00:03
Wohnort: Velbert - LA
Kontaktdaten: Website

30. Apr 2009, 15:33

Hi,
nente hat geschrieben:innerhalb einer domain ist das + nicht erlaubt aber in einem pfad schon.
Das ist mir schon klar. Warum bleibt mann nicht bei "erlaubten" und für den User "bekannten" Zeichen?

Viele Grüße
Oliver
> Friends Of REDAXO Gemeinsame REDAXO-Entwicklung!
> REDAXO Agenturen. Eintragen erwünscht!
> Komm in den Slack Channel Es lohnt sich!

Merchenman
Beiträge: 53
Registriert: 26. Jan 2007, 18:11
Wohnort: Marbella
Kontaktdaten: Website

30. Apr 2009, 16:50

Hi nente,
ich hab vorher auch immer die class.rewrite_fullnames.inc.php benutzt, und zwar ohne Probleme und das sollte eigentlich auch die richtige sein.

Wenn ich eine deiner beiden vorgeschlagenen Klassen nehmen, dann sieht der Link noch schlimmer aus:
http://www.domain.com/4-0-Real+Estate.htm

Also der fullname_rewriter ist ok, das Problem liegt tatsächlich in der Datei:
redaxo\include\functions\function_rex_url.inc.php
in der Funktion rex_parse_article_name die die Funktion urlencode() benutzt. Diese Funktion kann je nach PHP-Version unterschiedliche Ergbebnisse liefern und hat meistens ein +.

Ich hab einfach die gesamte Funktion mit der aus Redaxo 4.1 ersetzt, jetzt funktioniert es wieder.

Benutzeravatar
Markus.Lorch
Beiträge: 682
Registriert: 21. Okt 2007, 17:22
Wohnort: Walheim

30. Apr 2009, 17:36

Hallo,

du kannst dir alternativ noch "realurl" anschauen. Das macht definitiv ein "-". Aber an einigen stellen unterscheiden sich hier die Pfade wieder von URL_Rewrite_fullnames. Insgesamt und rein persönlich gefällt mir realurl außerdem irgendwie besser (man kann es im Backend außerdem ein Stückchen anpassen) ... und ich hab an der eingebauten Artikelweiterleitung großen Gefallen gefunden.
Grüße,
Markus Lorch

Tschüssle sagt Herr Nüssle

Benutzeravatar
ds
Admin
Beiträge: 247
Registriert: 10. Okt 2006, 22:58
Wohnort: Berlin
Kontaktdaten: Website

6. Mai 2009, 17:20

Quick n' dirty workaround: class.rewrite_fullnames.inc.php (sofern diese Klasse verwendet wird) in Zeile 345 ergänzen:

Code: Alles auswählen

$name = strtolower(rex_parse_article_name($name));
$name = str_replace('+', '-', $name);
Viele Grüße
_Dirk

nente
Beiträge: 46
Registriert: 25. Apr 2007, 13:49

6. Mai 2009, 18:25

@Merchenman
Ich würde nicht einzelne Dateien aus verschiedenen Versionen verwenden, dann lieber Dirks Lösung

hab mir jetzt mal beide Versionen vopn rex_url angeschaut. Die 4.2er arbeitet mit sprachspezifischen Ersetzungsregeln (was ein interessanter Ansatz ist, den ich persönlich aber nicht so toll finde).

Anyway, um im Redaxo 4.2er Kontext zu bleiben würde ich lieber das Leerzeichen in die Liste der "special_chars" aufnehmen, dann sollte das auch klappen und ist IMHO schöner als die Lösung von Dirk.

Die passenden Einträge in den lang-dateien sind "special_chars" und "special_chars_rewrite", zum Beispiel so ändern:
special_chars = ä| |ö|ü|Ä|Ö|Ü|ß|&
special_chars_rewrite = ae|_|oe|ue|Ae|Oe|Ue|ss|und

Grüße
Micha

Merchenman
Beiträge: 53
Registriert: 26. Jan 2007, 18:11
Wohnort: Marbella
Kontaktdaten: Website

7. Mai 2009, 10:56

Klingt gut. Ich hab jetzt Dirks Lösung genommen, was schon mal ein Anfang ist.

Aber trotzdem stört mich noch etwas mehr. Der Link sieht jetzt wie folgt aus:
http://www.domain.com/real-estate/real-estate.html

Vorher war mein Link nur:
http://www.domain.com/real-estate/

Aber der funktioniert jetzt nicht mehr. Vorher war das alles etwas intelligenter, selbst wenn ich etwas falsch geschrieben habe bin ich zur richtigen Seite gekommen. Warum ist das alles geändert??

Plakinger
Beiträge: 8
Registriert: 8. Jul 2009, 13:03
Kontaktdaten: Website

9. Jul 2009, 10:31

Hallo zusammen,

ich hatte das selbe Problem. Mir haben die URLs der Klasse class.rewrite_fullnames.inc.php nicht gepasst. Das Ergebnis war zum Beispiel:

http://www.domain.com/tipps+und+infos/t ... infos.html

Nun habe ich zuerst die Lösung von nente umgesetzt und die Sprachdatei geändert. Vielen Dank an nente! Nun wurde z.B. folgende URL angezeigt:

http://www.domain.com/tipps-und-infos/t ... infos.html

Schon viel besser, das kein + und + mehr vorkam. Nur leider wurde bei einem Startartikel der Name immer noch zwei mal angezeigt. Der erste Name ist nach meinem Verständnis der Name der Kategorie und der zweite der Name des Artikels. Das ist ist in Ordnung, wenn der Artikelname nicht mit dem Namen der Kategorie übereinstimmt. Bei mir sind die Namen jedoch identisch. Dieses Problem habe ich wie folgt gelöst: Ich habe in der Klasse class.rewrite_fullnames.inc.php die Zeilen 320 bis 326 auskommentiert:

Code: Alles auswählen

// if($ooa->isStartArticle())
//     {
//        $ooc = $ooa->getCategory();
//        $catname = $ooc->getName();
//        unset($ooc); // speicher freigeben
//        $pathname = rex_rewriter_appendToPath($pathname, $catname);
//      }
Nun werden die URLs nach meinen Vorstellungen angezeigt! Alternativ könnte man hier überprüfen, ob der Name der Kategorie nicht mit dem Artikelnamen übereinstimmt. Nur in diesem Fall wird der Artikelname dann hinzufügt:

Code: Alles auswählen

if($ooa->isStartArticle())
{
   $ooc = $ooa->getCategory();
   $catname = $ooc->getName();
   unset($ooc); // speicher freigeben
   if ($ooa->getName() != $catname) {
      $pathname = rex_rewriter_appendToPath($pathname, $catname);       
   }
}
Ist dieses Vorgehen in Ordnung oder ist es nicht gut diese Zeilen zu verändern? Gibt es eine andere (bessere) Lösung? Ich bitte um eure Meinung.

Gruß Martin

Benutzeravatar
Richard.Laing
Beiträge: 2105
Registriert: 28. Aug 2005, 00:55
Wohnort: Brühl / Rheinland
Kontaktdaten: Website

22. Jul 2009, 11:47

ich hänge mich mal ran.
auf meinen servern klappten all realurls bestens. bei 1und1 servern habe ich aktuell auch das problem.

mit der obrigen anleitung klappt es...

gruß richy
REXvideo Videotutorials für Redaxo www.REXvideo.de
Webseite www.on-laing.de smokezig.de www.smokezig.de

Benutzeravatar
ralf.schlott
Beiträge: 625
Registriert: 5. Dez 2007, 21:22
Wohnort: Hamburch
Kontaktdaten: Website

Problem '& oder &'

14. Aug 2009, 18:38

Dieser Thread hat bestimmt schon einigen geholfen.
Ich nutze diese Möglichkeiten schon sehr eingehend. Nun habe ich aber noch eine Frage:

Wenn ich in einer Kategorie ein & oder ein & nutze (letzteres wegen Konformität), würde ich das gerne in der URL komplett weglassen.
Könnte mir jemand sagen wie ich das realisiere?

Gruß & Dank
Ralf
- Danke für Redaxo! -
http://www.prenzlweb.de

Benutzeravatar
ds
Admin
Beiträge: 247
Registriert: 10. Okt 2006, 22:58
Wohnort: Berlin
Kontaktdaten: Website

Re: Problem '& oder &'

16. Aug 2009, 00:23

rsi hat geschrieben:Wenn ich in einer Kategorie ein & oder ein & nutze (letzteres wegen Konformität), würde ich das gerne in der URL komplett weglassen.
Könnte mir jemand sagen wie ich das realisiere?
Am unkompliziertesten geht's vermutlich dadurch, dass du in /redaxo/include/lang/ die beiden Sprachdateien de_de.lang und de_de_utf8.lang bearbeitest:

Code: Alles auswählen

# Sprachspezifische Sonderzeichen für Url-Umschreibung
special_chars = ä|ö|ü|Ä|Ö|Ü|ß|&
special_chars_rewrite = ae|oe|ue|Ae|Oe|Ue|ss|und
In der zweiten Zeile |& am Ende entfernen und in der dritten Zeile das |und.

Viele Grüße!
_Dirk

Benutzeravatar
ds
Admin
Beiträge: 247
Registriert: 10. Okt 2006, 22:58
Wohnort: Berlin
Kontaktdaten: Website

16. Aug 2009, 00:25

Im SVN wurde das Thema übrigens inzwischen erledigt: Das nächste REDAXO-Release wird wieder von Haus aus - statt + für URLs verwenden.

Viele Grüße
_Dirk

Benutzeravatar
ralf.schlott
Beiträge: 625
Registriert: 5. Dez 2007, 21:22
Wohnort: Hamburch
Kontaktdaten: Website

17. Aug 2009, 10:35

Herrlich, vielen Dank!

Ich habe es durch

Code: Alles auswählen

special_chars = ä|ö|ü|Ä|Ö|Ü|ß|&
special_chars_rewrite = ae|oe|ue|Ae|Oe|Ue|ss|
ersetzt.

Funktioniert hervorragend.

Gruß
Ralf
- Danke für Redaxo! -
http://www.prenzlweb.de

Zurück zu „Allgemeines [R4]“