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/
url_rewrite: Kurzes URL-Schema (domain.tld/artikel/)
Hallo,
kurze URLs nach dem Schema domain.tld/artikel/ lassen sich mit wenigen Handgriffen an der fullnames-Klasse des url_rewrite-Addons umsetzen, siehe http://blog.decaf.de/2009/05/kurze-urls-redaxo-cms/.
(Natürlich beachten: Die Verwendung dieses Schemas ist nur dann sinnvoll, wenn sicher gestellt werden kann, dass keine zwei gleichlautenden Artikel oder Kategorien existieren, die beim Rewrite die gleiche URL ergäben!)
Update 18.01.2010:
1. Bei Mehrsprachigkeit:
a) Alle Startartikel erhalten Sprachkürzel-URL (Bsp.: domain.tld/de/ statt domain.tld/de/startseite/)
b) Der Startartikel der Hauptsprache ($REX['START_CLANG_ID']) erhält Basis-URL OHNE Sprachkürzel (Bsp.: domain.tld statt domain.tld/de/).
2. Bugfix: $REX['NOTFOUND_ARTICLE_ID'] kam immer in clang 0. (Betrifft die fullnames-Klasse allgemein, nicht nur diese Erweiterung)
Viele Grüße!
_Dirk
kurze URLs nach dem Schema domain.tld/artikel/ lassen sich mit wenigen Handgriffen an der fullnames-Klasse des url_rewrite-Addons umsetzen, siehe http://blog.decaf.de/2009/05/kurze-urls-redaxo-cms/.
(Natürlich beachten: Die Verwendung dieses Schemas ist nur dann sinnvoll, wenn sicher gestellt werden kann, dass keine zwei gleichlautenden Artikel oder Kategorien existieren, die beim Rewrite die gleiche URL ergäben!)
Update 18.01.2010:
1. Bei Mehrsprachigkeit:
a) Alle Startartikel erhalten Sprachkürzel-URL (Bsp.: domain.tld/de/ statt domain.tld/de/startseite/)
b) Der Startartikel der Hauptsprache ($REX['START_CLANG_ID']) erhält Basis-URL OHNE Sprachkürzel (Bsp.: domain.tld statt domain.tld/de/).
2. Bugfix: $REX['NOTFOUND_ARTICLE_ID'] kam immer in clang 0. (Betrifft die fullnames-Klasse allgemein, nicht nur diese Erweiterung)
Viele Grüße!
_Dirk
Zuletzt geändert von ds am 12. Mär 2010, 00:00, insgesamt 2-mal geändert.
-
- Beiträge: 520
- Registriert: 21. Sep 2006, 17:39
- Kontaktdaten: ICQ
Entschuldige, ich hatte verpasst, zu antworten.breastfed hat geschrieben:Danke - funktioniert super.
Was auch schön wäre, ist eine Kategorisierte URL.
domain.de/leistungen/scheibenwischen/
Geht das damit?
Kategorisierte URL ist auch kein Problem. Dort, wo der Pfad zusammengebaut wird, muss der Code lediglich so angepasst werden, dass nur die erste Verzeichnisebene, die der gewünschten Kategorie entspricht, verwendet wird.
Folgenden Bereich (Zeile 292 ff.) aus der verlinkten fullnames-Klasse des url_rewrite-Addons..
Code: Alles auswählen
// pfad über kategorien bauen
/* deaktiviert für onelevel:
$path = trim($db->getValue('path'), '|');
if($path != '')
{
$path = explode('|', $path);
foreach ($path as $p)
{
$ooc = OOCategory::getCategoryById($p, $clang);
$name = $ooc->getName();
unset($ooc); // speicher freigeben
$pathname = rex_rewriter_appendToPath($pathname, $name);
}
}
*/
Code: Alles auswählen
// pfad über kategorien bauen
$path = trim($db->getValue('path'), '|');
if($path != '')
{
$path = explode('|', $path);
$ooc = OOCategory::getCategoryById($path[0], $clang);
$name = $ooc->getName();
unset($ooc); // speicher freigeben
$pathname = rex_rewriter_appendToPath($pathname, $name);
}
_Dirk
-
- Beiträge: 520
- Registriert: 21. Sep 2006, 17:39
- Kontaktdaten: ICQ
- ralf.schlott
- Beiträge: 625
- Registriert: 5. Dez 2007, 21:22
- Wohnort: Hamburch
- Kontaktdaten: Website
Das funktioniert hervorragend und erfüllt seinen Zweck. Vielen Dank für diese Überarbeitung.
Gruß
Ralf
Gruß
Ralf
- Danke für Redaxo! -
http://www.prenzlweb.de
http://www.prenzlweb.de
Hallo,
ich habe das Problem das ich die kurzen URLs nicht zum laufen bekomme. Hab alles so gemacht wie in der Beschreibung steht.
Habe im Rex 4.2.1 das $REX['MOD_REWRITE'] auf TRUE gesetzt und auch auf dem Server ist das MOD_REWRITE auf ON.
In der Browser Adresszeile steht zwar www.meinedomain.de/kontakt aber er kann die Seite nicht finden:
404 Not Found
The requested URL /kontakt/ was not found on this server.
Apache Server at www.meinedomain.de Port 80
Hat da einer einen Tip
LG
Florian
ich habe das Problem das ich die kurzen URLs nicht zum laufen bekomme. Hab alles so gemacht wie in der Beschreibung steht.
Habe im Rex 4.2.1 das $REX['MOD_REWRITE'] auf TRUE gesetzt und auch auf dem Server ist das MOD_REWRITE auf ON.
In der Browser Adresszeile steht zwar www.meinedomain.de/kontakt aber er kann die Seite nicht finden:
404 Not Found
The requested URL /kontakt/ was not found on this server.
Apache Server at www.meinedomain.de Port 80
Hat da einer einen Tip
LG
Florian
Danke für den (indirekten) Hinweis: Ich habe in der Beschreibung und auch in der angepassten Rewriter-Klasse vergessen die Infos bzgl. der htaccess mit aufzunehmen.ich habe das Problem das ich die kurzen URLs nicht zum laufen bekomme. Hab alles so gemacht wie in der Beschreibung steht.
Hier der Auszug aus der originalen Rewriter-Klasse:
Code: Alles auswählen
/**
* URL Fullnames Rewrite Anleitung:
*
* 1) .htaccess file in das root verzeichnis:
* RewriteEngine On
* #RewriteCond %{HTTP_HOST} ^domain.tld [NC]
* #RewriteRule ^(.*)$ http://www.domain.tld/$1 [L,R=301]
* #RewriteBase /
* RewriteCond %{REQUEST_FILENAME} !-f
* RewriteCond %{REQUEST_FILENAME} !-d
* RewriteCond %{REQUEST_FILENAME} !-l
* RewriteCond %{REQUEST_URI} !^redaxo/.*
* RewriteCond %{REQUEST_URI} !^files/.*
* RewriteRule ^(.*)$ index.php?%{QUERY_STRING} [L]
*
* 2) .htaccess file in das redaxo/ verzeichnis:
* RewriteEngine Off
*
* 3) im Template folgende Zeile AM ANFANG des <head> erg‰nzen:
* <base href="http://www.meine_domain.de/pfad/zum/frontend" />
*
* 4) Specials->Regenerate All starten
Sollte es danach immer noch nicht funktionieren, melde Dich bitte hier nochmal.
Viele Grüße!
_Dirk
Hi,
also meine htaccess schaut so aus wie soll die jetzt aussehen? Wie sieht die Datei bei Punkt zwei aus?
Besten Dank
also meine htaccess schaut so aus wie soll die jetzt aussehen? Wie sieht die Datei bei Punkt zwei aus?
Code: Alles auswählen
RewriteEngine On
### In case ModRewrite doesnt work remove following comment and try again
# RewriteBase /
RewriteRule ^([0-9]*)-([0-9]*)- index.php?article_id=$1&clang=$2&%{QUERY_STRING}
RewriteRule ^([0-9]*)- index.php?article_id=$1&%{QUERY_STRING}
### In case you want to secure all files via your own addon remove comment
# RewriteRule ^files/(.*) /index.php?rex_media=$1&%{QUERY_STRING} [NC]
### Remove Comments when you user Fullname "url_rewrite" AddOn
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_FILENAME} !-l
#RewriteCond %{REQUEST_URI} !^redaxo/.*
#RewriteCond %{REQUEST_URI} !^files/.*
#RewriteRule ^(.*)$ index.php?%{QUERY_STRING} [L]
fgrote, in Deiner htaccess ist der wichtige Teil noch auskommentiert. Du musst die # am Anfang entfernen:
Viele Grüße!
_Dirk
Code: Alles auswählen
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_FILENAME} !-l
#RewriteCond %{REQUEST_URI} !^redaxo/.*
#RewriteCond %{REQUEST_URI} !^files/.*
#RewriteRule ^(.*)$ index.php?%{QUERY_STRING} [L]
_Dirk
Die beiden hier vorgestellten Varianten sind für umfangreiche Seiten, wo sich Namensgleichheiten nicht vermeiden lassen, leider nicht geeignet.
Wäre es mit url_rewrite auch zu realisieren, dass der Pfad zum Startartikel einfach nur den Kategorienamen enthält und ansonsten alles so ist, wie bei der Standardvariante?
Also so:
http://www.domain.com/kategorie/
und nicht so:
http://www.domain.com/kategorie/startartikel.html
und auch nicht so:
http://www.domain.com/startartikel.html
Es müssten also immer alle Kategorieebenen im Link enthalten sein, und ein Artikelname sollte nur dann angehängt werden, wenn die Kategorie mehr als einen Artikel enthält.
Ist das möglich?
Gruß, Sabrina
Wäre es mit url_rewrite auch zu realisieren, dass der Pfad zum Startartikel einfach nur den Kategorienamen enthält und ansonsten alles so ist, wie bei der Standardvariante?
Also so:
http://www.domain.com/kategorie/
und nicht so:
http://www.domain.com/kategorie/startartikel.html
und auch nicht so:
http://www.domain.com/startartikel.html
Es müssten also immer alle Kategorieebenen im Link enthalten sein, und ein Artikelname sollte nur dann angehängt werden, wenn die Kategorie mehr als einen Artikel enthält.
Ist das möglich?
Gruß, Sabrina
Hallo Sabse,
irgendwie ist Dein Post untergegangen, sorry.
Wenn ich Dich richtig verstehe, willst Du also solche URLs:
Das erreichst Du, indem Du ../url_rewrite/classes/class.rewrite_fullnames.inc.php modifizierst:
1. Kommentiere die Zeilen 318-324 aus
2. Ändere Zeile 331 von in
Cache löschen in REDAXO > System nicht vergessen!
Viele Grüße
_Dirk
irgendwie ist Dein Post untergegangen, sorry.
Wenn ich Dich richtig verstehe, willst Du also solche URLs:
Code: Alles auswählen
domain.tld/kategorie/subkategorie/seite/
1. Kommentiere die Zeilen 318-324 aus
Code: Alles auswählen
/*
if($ooa->isStartArticle())
{
$ooc = $ooa->getCategory();
$catname = $ooc->getName();
unset($ooc); // speicher freigeben
$pathname = rex_rewriter_appendToPath($pathname, $catname);
}
*/
2. Ändere Zeile 331 von
Code: Alles auswählen
$pathname = substr($pathname,0,strlen($pathname)-1).'.html';
Code: Alles auswählen
$pathname = substr($pathname,0,strlen($pathname)-1).'/';
Viele Grüße
_Dirk
-
- Beiträge: 520
- Registriert: 21. Sep 2006, 17:39
- Kontaktdaten: ICQ
Das geht noch weiter, als wie ich es mir vorgestellt hatte, mir ging es nur darum, dass der Startartikel ohne .html erreichbar wird, jetzt steht nirgendwo mehr was von .html.ds hat geschrieben:Hallo Sabse,
irgendwie ist Dein Post untergegangen, sorry.
Wenn ich Dich richtig verstehe, willst Du also solche URLs:
Code: Alles auswählen
domain.tld/kategorie/subkategorie/seite/
Aber so ist es auch gut, vielen Dank!
Diese ganzen Varianten sollten mit in den url_rewrite Download gepackt werden, und um es Anfängerfreundlicher zu machen, im Backend auswählbar sein.
Gruß, Sabrina.
[/quote]
Update 18.01.2010
Hallo,
ich habe heute ein Update gemacht. Betrifft vor allem mehrsprachige Websites:
a) Alle Startartikel erhalten Sprachkürzel-URL (Bsp.: domain.tld/de/ statt domain.tld/de/startseite/)
b) Der Startartikel der Hauptsprache (clang 0) erhält Basis-URL OHNE Sprachkürzel (Bsp.: domain.tld statt domain.tld/de/).
Beispielhaft mal die SEED WARRIORS-Website anschauen:
http://seedwarriors.org/ (statt seedwarriors.org/en/ statt seedwarriors.org/en/homepage/)
http://seedwarriors.org/de/ (statt seedwarriors.org/de/startseite/)
Hintergrund zu b): Ich habe das Sprachkürzel deshalb weggemacht, weil sonst zwei identische Seiten existieren würden. Die Startseite unter der Domain, und die Startseite unter Domain + Sprachkürzel der Hauptsprache (etwa /en/).
Neue Fullnames-Klasse hier runterladen, die alte überschreiben und im REDAXO-Backend den Cache löschen:
http://blog.decaf.de/2009/05/kurze-urls-redaxo-cms/
Viele Grüße
_Dirk
ich habe heute ein Update gemacht. Betrifft vor allem mehrsprachige Websites:
a) Alle Startartikel erhalten Sprachkürzel-URL (Bsp.: domain.tld/de/ statt domain.tld/de/startseite/)
b) Der Startartikel der Hauptsprache (clang 0) erhält Basis-URL OHNE Sprachkürzel (Bsp.: domain.tld statt domain.tld/de/).
Beispielhaft mal die SEED WARRIORS-Website anschauen:
http://seedwarriors.org/ (statt seedwarriors.org/en/ statt seedwarriors.org/en/homepage/)
http://seedwarriors.org/de/ (statt seedwarriors.org/de/startseite/)
Hintergrund zu b): Ich habe das Sprachkürzel deshalb weggemacht, weil sonst zwei identische Seiten existieren würden. Die Startseite unter der Domain, und die Startseite unter Domain + Sprachkürzel der Hauptsprache (etwa /en/).
Neue Fullnames-Klasse hier runterladen, die alte überschreiben und im REDAXO-Backend den Cache löschen:
http://blog.decaf.de/2009/05/kurze-urls-redaxo-cms/
Viele Grüße
_Dirk
Achso, der Vollständigkeit halber: Wer eine Seite mit der alten Fullnames-Klasse online hat, sollte seine Rewrite-Regeln ergänzen, etwa so:
Cool URIs don't change
Code: Alles auswählen
RewriteRule ^en/$ http://%{HTTP_HOST} [R=301,L]
RewriteRule ^en/homepage/$ http://%{HTTP_HOST} [R=301,L]
RewriteRule ^de/startseite/$ http://%{HTTP_HOST}/de/ [R=301,L]
Hallo,
ich nutze dieses tolle "Addon".
Nur ein Problem und zwar mein Redaxo liegt in einem Unterordner des root-verzeichnisses auf dem Webserver und jetzt bekomme ich folgende URL:
www.domain.de/unterordner/startseite.html
Ich möchte jedoch www.domain.de/startseite.html
Lässt sich das realisieren?
Gruß
ich nutze dieses tolle "Addon".
Nur ein Problem und zwar mein Redaxo liegt in einem Unterordner des root-verzeichnisses auf dem Webserver und jetzt bekomme ich folgende URL:
www.domain.de/unterordner/startseite.html
Ich möchte jedoch www.domain.de/startseite.html
Lässt sich das realisieren?
Gruß
noch keine Änderung mit folgender htaccess im Verzeichnis wo redaxo installiert ist, in diesem fall also in /panoramafotografie
Code: Alles auswählen
RewriteEngine On
#RewriteCond %{HTTP_HOST} ^domain.tld [NC]
#RewriteRule ^(.*)$ http://www.domain.tld/$1 [L,R=301]
RewriteBase /panoramafotografie
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} !^redaxo/.*
RewriteCond %{REQUEST_URI} !^files/.*
RewriteRule ^(.*)$ index.php?%{QUERY_STRING} [L]
Mein Fehler. =)Maw. hat geschrieben:noch keine Änderung mit folgender htaccess im Verzeichnis wo redaxo installiert ist, in diesem fall also in /panoramafotografie
Ich muss ehrlich gestehen, dass ich mir auch schon die Zähne daran ausgebissen habe.
Versuch´s mal mit einer htaccess-Datei im Domainroot mit folgendem Inhalt:
Code: Alles auswählen
RewriteEngine On
RewriteBase /
RewriteRule .* SUBDIR/index.php
Jetzt musst du das url_rewrite-Schema nur noch so anpassen, dass der Unterordner nicht mehr in den Links auftaucht.
Wenn das nicht klappt, habe ich noch eine andere Idee, die aber ein bisschen Overkill ist. Ich drück´ dir also die Daumen! =)
Dafür musst Du — soweit ich das sehe — die Fullnames-Klasse modifizieren, denn dort werden die URLs auf Basis von dirname($_SERVER['PHP_SELF']) zusammengebaut, nicht aufgrund einer Variable, die Du im Backend oder wo auch immer anpassen könntest.Maw. hat geschrieben:Nur ein Problem und zwar mein Redaxo liegt in einem Unterordner des root-verzeichnisses auf dem Webserver und jetzt bekomme ich folgende URL:
www.domain.de/unterordner/startseite.html
Ich möchte jedoch www.domain.de/startseite.html
Lässt sich das realisieren?
Gruß
Zeile 98:
Code: Alles auswählen
$script_path = str_replace(' ', '%20', dirname($_SERVER['PHP_SELF']));
Code: Alles auswählen
$script_path ='/';
Code: Alles auswählen
$baseDir = str_replace(' ', '%20', dirname($_SERVER['PHP_SELF']));
Code: Alles auswählen
$baseDir = '/';
Code: Alles auswählen
RewriteRule ^(.*)$ panoramafotografie/index.php?%{QUERY_STRING} [L]
_Dirk
Hallo,
nochmal ein kleiner Bugfix: Die Hauptsprache war fälschlicherweise als clang = 0 angegeben und wurde nun gegen $REX['START_CLANG_ID'] getauscht. Der zugehörige Wert befindet sich in der master.inc.php und kann schließlich auch mal ein anderer als Null sein(, so wie heute in einem Projekt vorgekommen).
Zeile 328:
(Sonst keine weiteren Änderungen.)
Viele Grüße!
_Dirk
nochmal ein kleiner Bugfix: Die Hauptsprache war fälschlicherweise als clang = 0 angegeben und wurde nun gegen $REX['START_CLANG_ID'] getauscht. Der zugehörige Wert befindet sich in der master.inc.php und kann schließlich auch mal ein anderer als Null sein(, so wie heute in einem Projekt vorgekommen).
Zeile 328:
Code: Alles auswählen
if (!($db->getValue('id') == $REX['START_ARTICLE_ID'] && $clang == $REX['START_CLANG_ID'])) // onelevel: Startartikel in Hauptsprache ohne Sprachkürzel
Viele Grüße!
_Dirk
-
- Beiträge: 520
- Registriert: 21. Sep 2006, 17:39
- Kontaktdaten: ICQ
Hi Dirk
ich habe eine Frage. Kannst du mir zeigen wie ich eventuell das URL Rewrite wie folgt aufbaue:
Ich habe folgende Struktur:
Startseite
- Leistungen
- - Streichen
Das domain.de/leistungen/streichen.php habe ich hinbekommen.
Nur wie mach ich das die Startartikel mit verarbeitet werden. So zb:
domain.de/leistungen/index.php - bisher würde domain.de/leistungen.php raus kommen, aber das ist nicht gewünscht.
Geht das?
Danke dir!
ich habe eine Frage. Kannst du mir zeigen wie ich eventuell das URL Rewrite wie folgt aufbaue:
Ich habe folgende Struktur:
Startseite
- Leistungen
- - Streichen
Das domain.de/leistungen/streichen.php habe ich hinbekommen.
Nur wie mach ich das die Startartikel mit verarbeitet werden. So zb:
domain.de/leistungen/index.php - bisher würde domain.de/leistungen.php raus kommen, aber das ist nicht gewünscht.
Geht das?
Danke dir!
Ich find ein CMS gut.