Plugin Advanced Mod Rewrite für Contenido 4.8.x

Brazo Alkher
Beiträge: 103
Registriert: Fr 28. Jan 2005, 15:15
Wohnort: Unna
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von Brazo Alkher » Di 6. Okt 2009, 12:17

warum wird in der Datei class.modrewritecontroller.php in der Funktion _extractRequestUri 2x der Block

Code: Alles auswählen

            
if (parent::getConfig('rootdir') !== '/' && strpos($aUrlComponents['path'], parent::getConfig('rootdir')) === 0) {
    $aUrlComponents['path'] = str_replace(parent::getConfig('rootdir'), '/', $aUrlComponents['path']);
}
ausgeführt? Einmal vorm Aufruf von der Funktion _parseUrl und einmal danach.

Das führt nämlich zu einem Problem, wenn die Homepage in einem Unterverzeichnis (z.B. /kundenname/) läuft, man bei der AMR Konfiguration "Start vom Hauptbaum" aktiviert und der Hauptbaum beim Kunden wie das Unterverzeichnis heißt. Dann wird solch eine URL generiert: /kundenname/kundenname/test/
Beim Zurückübersetzen wird daduch aber nur noch /test/ und diese Kategorie vom Hauptbaum gibt es halt nicht.

xmurrix
Beiträge: 3147
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von xmurrix » Di 6. Okt 2009, 16:23

Brazo Alkher hat geschrieben:warum wird in der Datei class.modrewritecontroller.php in der Funktion _extractRequestUri 2x der Block

Code: Alles auswählen

            
if (parent::getConfig('rootdir') !== '/' && strpos($aUrlComponents['path'], parent::getConfig('rootdir')) === 0) {
    $aUrlComponents['path'] = str_replace(parent::getConfig('rootdir'), '/', $aUrlComponents['path']);
}
ausgeführt? Einmal vorm Aufruf von der Funktion _parseUrl und einmal danach.

Das führt nämlich zu einem Problem, wenn die Homepage in einem Unterverzeichnis (z.B. /kundenname/) läuft, man bei der AMR Konfiguration "Start vom Hauptbaum" aktiviert und der Hauptbaum beim Kunden wie das Unterverzeichnis heißt. Dann wird solch eine URL generiert: /kundenname/kundenname/test/
Beim Zurückübersetzen wird daduch aber nur noch /test/ und diese Kategorie vom Hauptbaum gibt es halt nicht.
Da es früher Probleme unter anderen Konstellationen gab, wurde der Block zum zweiten Mal (sozusagen als Sicherheit) eingebaut. Frag mich nicht, was der genaue Grund ist, den gibt es aber...

Bin der Meinung, dass das Plugin in der jetzigen Version nicht jeder Anforderung gerecht wird. Es gibt so viele unterschiedliche Anforderungen/Vorgaben, die damit nicht lösbar sind. So wie in deinem Fall. Hauptkategorie und Unterkategorie haben die identische Bezeichnung. Beim Anderen sollen alle Kategorien in der URL erscheinen, aber eine bestimmte nicht, oder manche Seiten sollen die Endung .html haben, andere wiederum nicht, usw...

Wenn ich nun das Plugin dahingehend anpasse, dass es bei dir funktioniert, wird es bei anderen Usern Probleme machen - Das ist ein Dilemma.

Wäre es z. B. nicht möglich, dass das Unterverzeichnis eine andere Bezeichnung als die des Hauptbaums bekommt, dann hättest du das Problem nicht - Nur so eine Idee...

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Brazo Alkher
Beiträge: 103
Registriert: Fr 28. Jan 2005, 15:15
Wohnort: Unna
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von Brazo Alkher » Do 8. Okt 2009, 13:46

xmurrix hat geschrieben:Wäre es z. B. nicht möglich, dass das Unterverzeichnis eine andere Bezeichnung als die des Hauptbaums bekommt, dann hättest du das Problem nicht - Nur so eine Idee...
Klar wäre das eine einfache Möglichkeit, trotzdem erklärt das noch nicht den Grund, warum das überhaupt doppelt gemacht wird :-)
bzw. habe ich den 2. Block bei mir dann auskommentiert.
Die Konstellation unter der das Probleme verursacht hätte mich halt dann nur interessiert.

xmurrix
Beiträge: 3147
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von xmurrix » Do 8. Okt 2009, 21:32

Brazo Alkher hat geschrieben:...Klar wäre das eine einfache Möglichkeit, trotzdem erklärt das noch nicht den Grund, warum das überhaupt doppelt gemacht wird :-)
bzw. habe ich den 2. Block bei mir dann auskommentiert.
Die Konstellation unter der das Probleme verursacht hätte mich halt dann nur interessiert.
Den genauen Grud für das doppelte Entfernen kann ich dir leider nicht sagen. Die Änderung habe ich laut SVN-Log am 07.02.2009 commited. Am 08.02.2009 kan die Version 0.5.3 raus. Laut der Changelog könnte es eines der folgenden Punkte sein:

Code: Alles auswählen

2009-02-08  Advanced Mod Rewrite Plugin 0.5.3 for Contenido >=4.8.10
    * bugfix: Occurance of invalid frontend URLs result in invalid rewritten URLs to root
    * bugfix: Defined separator modified client path, which is not desired
Leider habe ich keine genauere Infos, zur der Zeit war ich etwas nachlässig. Ich werde mir mal die Beiträge im Forum kurz vor dem 07.02. ansehen, da gibt es bestimmt einen Hinweis dazu.
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

swefla
Beiträge: 1
Registriert: Di 27. Okt 2009, 20:11
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von swefla » Di 27. Okt 2009, 20:14

bin neu hier im forum, aber komme mit contenido cms sehr gut zurecht.

Hab jetzt das AMR Plugin installiert, und es werden keine favicons mehr angezeigt.

Kann mir jemand weiter helfen?

LG,
swefla

xmurrix
Beiträge: 3147
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von xmurrix » Di 27. Okt 2009, 20:26

swefla hat geschrieben:bin neu hier im forum, aber komme mit contenido cms sehr gut zurecht.

Hab jetzt das AMR Plugin installiert, und es werden keine favicons mehr angezeigt...
Hallo swefla,

willkommen im Forum.

Wie ist der Pfad zu den favicons genau aufgebaut?
Überprüfe doch mal den base-Tag im head-Bereich und den Wert im href-Attribut für das favicon.
Es kann sein, dass die Browser beides zusammen interpretieren ("base href" + "link href"), das ergibt dann vielleicht einen anderen Pfad...

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von homtata » Mi 11. Nov 2009, 12:19

hallo,

ich habe folgendes problemchen mit der htaccess und bisher keine lösung dazu gefunden:
- grundlagen: meine seite (4.8.12) wird in 3 sprachversionen betrieben, mandantenverzeichnis ist /cms, contenido verzeichnis ist /contenido, soweit alles standard.
- als htaccess ist die "restrictive"-version im einsatz.
- im root-verzeichnis (also im wwwroot) gibt es eine index.php, die eine splashseite zur sprachverzweigung darstellt, die NICHT teil von contenido ist. von dort aus werden die sprachrichtigen links aufgerufen.
- das plugin führt nun dazu, dass die splashseite übergangen wird und nach aufruf der domain direkt in contenido gesprungen wird (www.domain.com/en/home/home.html).
- versuche ich das durch änderungen in der htaccess zu unterbinden (deren regeln ich trotz vielen googlens nicht wirklich kapiere), geht zwar die splashseite, aber die weiteren links nicht.
- ich hatte auch schon die htaccess in der simple-version im einsatz und habe dort wie im forum beschrieben "RewriteRule ^$ front_content.php [QSA,L]" durch "RewriteRule ^$ index.php [QSA,L]" ersetzt, aber auch das hilft nix.
- als übergangslösung habe ich die htaccess nach /cms verschoben und die pfadeinstellungen des plugins angepasst - das führt nun aber natürlich zu links à la www.domain.com/cms/en/home/home - und ich hätte das CMS gern weg...

weiß jemand rat?

andreasb
Beiträge: 212
Registriert: Fr 10. Dez 2004, 02:48
Wohnort: Fernwald
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von andreasb » Mi 11. Nov 2009, 12:30

Ähnliches hatte ich auch schon, dass muss hier weiter vorne irgendwo stehen.
htaccess im Root und und die Vorschaltseite in cms. Ausnahmen wie folgt:

Code: Alles auswählen

RewriteRule ^cms/index.html$ - [L]
RewriteRule ^$ index.html [L]
RewriteRule ^cms/index_e.html$ - [L]
RewriteRule ^cms/index_es.html$ - [L]
RewriteRule ^cms/index_fr.html$ - [L]
RewriteRule ^cms/index_rus.html$ - [L]
RewriteRule ^cms/index_d.html$ - [L]
Musst Du mal probieren oder weiter vorne nachlesen.

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von homtata » Mi 11. Nov 2009, 12:57

yippie, super, funktioniert. vielen dank!

Mario_m
Beiträge: 90
Registriert: Sa 24. Okt 2009, 22:57
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von Mario_m » Mo 23. Nov 2009, 00:26

Ich nutze AMR 0.5.4 und möchte mein Backend mit einer https Zwangsumleitung bestücken. Bisher funktionierte u.a. erste Regel
Seit der AMR Config leider nicht mehr. Die ssl Adresse läuft über eine subdomain und Contenido ist ein einem Unterordner installiert.
Ich nutze den Mandanten unter /DocumentRoot/con1/cms. Leider zieht die Regel nicht. Alles beim Alten.
Keiner Fehler, keine Umleitung.

Hat jemand eine Idee wie ich die Zwangsumleitung für mein Backend und der AMR Simple Config einrichten soll?
Ich habe auch festgestellt, dass AMR im Backend nicht funktioniert. Vileicht gibt es ja hier auch noch einen Tipp.

#Anfragen auf http://www.domain.de/con1/contenido auf https umleiten
RewriteCond %{HTTPS} !=on
RewriteRule ^con1/contenido$ https://domain.profissl.de/con1/contenido/

# Specify a base URL-path for the rules
# -------------------------------------
RewriteBase /con1/cms/

# Catch some common exploits in query string to get rid of them
# NOTE: Conditions to prevent protocolls (ftp, http[s]) in query string could be a
# disadvantage in some cases
# --------------------------------------------------------------------------------
RewriteCond %{QUERY_STRING} contenido_path=.*$ [NC,OR]
RewriteCond %{QUERY_STRING} cfg\[path\]=.*$ [NC,OR]
RewriteCond %{QUERY_STRING} _PHPLIB\[libdir\]=.*$ [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} ftp://.*$ [NC,OR]
RewriteCond %{QUERY_STRING} http[s]*://.*$ [NC]
RewriteRule ^.* - [F,L] # all matching conditions from above will end in nirvana
# Rewrite request to root to front_content.php
# --------------------------------------------
RewriteRule ^$ front_content.php [QSA,L]

# Exclude following request from rewriting
# tests for valid symlinks (-s), not empty files (-l) and folders (-d)
# --------------------------------------------------------------------
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

# Pass other requests to front_content.php
# ----------------------------------------
RewriteRule ^.*$ front_content.php [QSA,NC,L]

xmurrix
Beiträge: 3147
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von xmurrix » Di 24. Nov 2009, 16:09

Mario_m hat geschrieben:Ich nutze AMR 0.5.4 und möchte mein Backend mit einer https Zwangsumleitung bestücken. Bisher funktionierte u.a. erste Regel
Seit der AMR Config leider nicht mehr. Die ssl Adresse läuft über eine subdomain und Contenido ist ein einem Unterordner installiert.
Ich nutze den Mandanten unter /DocumentRoot/con1/cms. Leider zieht die Regel nicht. Alles beim Alten.
Keiner Fehler, keine Umleitung.

Hat jemand eine Idee wie ich die Zwangsumleitung für mein Backend und der AMR Simple Config einrichten soll?
Erstelle in /DocumentRoot/con1/contenido/ eine .htaccess und schreibe folgendes hinein:

Code: Alles auswählen

#Anfragen auf http://www.domain.de/con1/contenido auf https umleiten
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://domain.profissl.de/con1/contenido/

# oder alternativ eine andere variante
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://domain.profissl.de/con1/contenido/$1 [R=301,NC,L]
Mario_m hat geschrieben:Ich habe auch festgestellt, dass AMR im Backend nicht funktioniert. Vileicht gibt es ja hier auch noch einen Tipp.
Das Umschreiben der URLs im Backend ist absichtlich deaktiviert, das würde mehr Probleme bringen, als Vorteile.
Wenn du es aber dennoch ausprobieren möchtest, kannst du es in der contenido/plugins/mod_rewrite/includes/config.plugin.php in Zeile 122 anpassen.
Dort wird überprüft, ob das Plugin im Frontend läuft

Code: Alles auswählen

if (!isset($GLOBALS['contenido'])) {
Trifft die Bedingung zu (es existiert keine globale Variable $contenido), werden die für das Umschreiben der URLs nötigen Funktionen "scharfgeschalten".

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Mario_m
Beiträge: 90
Registriert: Sa 24. Okt 2009, 22:57
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von Mario_m » Mi 25. Nov 2009, 00:13

hab die htaccess im root angepasst
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^con1/contenido.*$ https://domain.profissl.de/con1/contenido [R,L]
funktioniert.
Da ich den Demo Mandanten benutze und das Ganze in einem Unterordner läuft muss ich eigentlich vom wwwroot aus eine Umleitung machen,
da der Documentroot der Domain auf den wwroot zeigt.

zum zweiten Thema:
was soll ich in der Datei anpassen? "!" wegnehmen hilft da nicht.

xmurrix
Beiträge: 3147
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von xmurrix » Mi 25. Nov 2009, 10:59

Mario_m hat geschrieben:...
zum zweiten Thema:
was soll ich in der Datei anpassen? "!" wegnehmen hilft da nicht.
Mach in der Datei contenido/plugins/mod_rewrite/includes/config.plugin.php folgende Änderungen:

Zeile 122

Code: Alles auswählen

    if (!isset($GLOBALS['contenido'])) {
ändern in

Code: Alles auswählen

#    if (!isset($GLOBALS['contenido'])) {
Zeile 158 ändern in Dann ist das Plugin auch im Backend aktiv. Kann dir aber nicht garantieren, dass es im Backend funktioniert. Es war nie angedacht, dass das Plugin im Backend laufen soll.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Mario_m
Beiträge: 90
Registriert: Sa 24. Okt 2009, 22:57
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von Mario_m » Di 1. Dez 2009, 23:16

Ich kann auch leider keine Änderung feststellen. Aber nicht so schlimm, wäre halt schön gewesen.

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Artikel-Alias-URL-Name und Kategorie-Alias-URL-Name auslesen

Beitrag von derSteffen » Do 17. Dez 2009, 16:01

Hallo,

ich möchte gerne von einem Artikel die Alias-Name-Url und die Kategorie-Alias-Name-Url in der er sich befindet ausgeben lassen.

Also nicht den Aliasnamen, sonden den Alias wie er in der URL vorkommt.

Damit gebe ich ja den Alias-Namen aus (der kann allerdings großgeschrieben sein und wenn ich sagen bei AMW alles kleingeschreiben, stimmt das nicht überein)

Code: Alles auswählen

cInclude('classes', 'class.article.php');
$oArt = new Article($idart, $client, $lang);
echo $oArt->getField('urlname');
Und ich würde gerne die Alias-Kategorien-Url ausgeben wo sich der Artikel befindet.

Also fast eigentlich als wenn man sagen würde getURL.

Kann mir da jemand weiterhelfen? Vielen Dank schonmal.

MfG Steffen

Gesperrt