Plugin Advanced Mod Rewrite für Contenido 4.8.x

xmurrix
Beiträge: 3213
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 16 Mal
Kontaktdaten:

Beitrag von xmurrix »

Rincewind hat geschrieben:...Warning: /www/htdocs/w00a69a5/contenido/classes/class.cec.php 101: Chain Contenido.Frontend.AfterLoadPlugins doesn't exist. in /www/htdocs/w00a69a5/contenido/includes/functions.general.php on line 2093...
Das kann vorkommen, wenn beim Kopieren der Pluginsourcen, die vorhandenen Sourcen nicht überschreiben werden konnten.

Die Chain "Contenido.Frontend.AfterLoadPlugins" gibt es in der "/contenido/includes/config.chains.php" nicht, aber im Pluginpackage in der "/plugin_advanced_mod_rewrite_0.4.5/contenido/includes/config.chains.php". Das gilt auch für alle anderen Dateien.

Die config.chains.php aus der Contenido-Installation muss gegen die Version aus dem Plugin ersetzt werden.

Die anderen Fehler werden sicherlich auch die gleiche Ursache haben.

Gruß
xmurrix
Rincewind
Beiträge: 54
Registriert: Di 20. Feb 2007, 14:10
Kontaktdaten:

Beitrag von Rincewind »

danke .. seltsamerweise wars das.
ich hatte übrigens nach tom's Post das ganze nochmal aufgespielt ..

es läuft.
wunderbar. danke für das plugin.
stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Beitrag von stefkey »

Hallo,

kann ich über die Modifizierung der .htaccess folgendes erreichen?


Ich möchte vorübergehend das nur die Introseite und die Kontaktseite erreichbar ist. Die Introseite und die Kontaktseite haben keine Navigation, aber wenn ich in der URL zB. ww.example.com/kategorie4 eingebe lande ich auf der entsprechenden Kategorie.

Aber jetzt kommts: Diese unsichtbaren Kategorien sollen nach Eingabe eines Passwortes doch erreichbar sein.
Mit entsprechende Modifikation der .htaccess sollte das doch möglich sein, ich kann ja auch bei Nicht-Contenido Seiten ein Passwort per .htaccess anfordern.


Kann mir jemand helfen?


Grüße und Danke
stefkey
Rincewind
Beiträge: 54
Registriert: Di 20. Feb 2007, 14:10
Kontaktdaten:

Beitrag von Rincewind »

ich bräuchte auch nochmal eure hilfe :)

ich habe 2 Contenido-Installationen auf dem Server (eine für eine aufgeschaltete Domain)

die contentverzeichnisse liegen in
/1150/ und
/leben-und-handwerk/550/
vom root ausgehend.

die .htaccess habe ich nun nicht in den root gepackt, weil ich jeweils noch mindestens einen mandanten mehr in die installation integrieren möchte und habe sie daher ins content verzeichnis gepackt
das ganze dann im Contenido entsprechen geändert und die .htaccess beim hauptmandaten (1150) angepasst:


#AddType x-mapp-php5 .php
#AddHandler x-mapp-php5 .php

<IfModule mod_rewrite.c>
RewriteEngine on

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


# Exclude some files and directories from rewriting
# -------------------------------------------------
RewriteRule ^usage/.*$ - [L]
RewriteRule ^contenido/.*$ - [L]
RewriteRule ^setup/.*$ - [L]
RewriteRule ^upload/.*$ - [L]
RewriteRule ^test/.*$ - [L]
RewriteRule ^1150/front_content.php.*$ - [L]
# enable following line if you want to run the plugin test
#RewriteRule ^mr_test.php.*$ - [L]


# 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


# One RewriteRule to rule them all
# --------------------------------
RewriteRule !\.(js|ico|gif|jpg|jpeg|png|css|pdf)$ front_content.php [NC,QSA,L]

</IfModule>
das gleiche wollte ich beim contentverzeichnis der unterdomain auch machen (was einmal klappt, klappt auch ein zweites mal :D ) .. aber da sagt er mir das er die front_content.php nicht finden kann ..
The requested URL /550/front_content.php was not found on this server.
hochgeladen ist alles .. aktuell auch (habs zweimal überprüft)

seht ihr den fehler ?
stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Beitrag von stefkey »

klingt komplziert.

ich meine mal das von einer Domain aus ja dann das Contenido Verzeichnis 2 Ebenen höher liegt?!

Dann muss ja auch in der ein oder anderen Datei aus ../contenido -> ../../contenido werden.

Oder?


Vielleicht kannst du es nochmal erklären, ausgehend von den Domains


Grüße,
stefkey
xmurrix
Beiträge: 3213
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 16 Mal
Kontaktdaten:

Beitrag von xmurrix »

Ricewind hat geschrieben:...ich habe 2 Contenido-Installationen auf dem Server (eine für eine aufgeschaltete Domain)

die contentverzeichnisse liegen in
/1150/ und
/leben-und-handwerk/550/
vom root ausgehend...
Hast du Contenido 2 x Installiet oder hast du 2 Mandanten unter einer Contenido Installation am Laufen?

Vermutlich 1 Contenidoinstallation mit mehreren Mandanten.

Bei deiner Vorgehensweise, 2 oder mehr Mandanten mit eigenen Mandantenverzeichnissen zu steuern, ist die .htaccess im Mandantenverzeichnis an die neuen Gegebenheiten anzupassen.

Mandant 1 unter "/1150/":
Die .htaccess liegt im /1150/ mit

Code: Alles auswählen

RewriteBase /1150/
...
RewriteRule ^1150/front_content.php.*$ - [L]
In der Pluginkonfiguration ist der Pfad zur .htaccess als "/1150/" anzugeben.

Mandant 2 unter "/leben-und-handwerk/550/":
Die .htaccess liegt im /leben-und-handwerk/550/ mit

Code: Alles auswählen

RewriteBase /leben-und-handwerk/550/
...
RewriteRule ^leben-und-handwerk/550/front_content.php.*$ - [L]
In der Pluginkonfiguration ist der Pfad zur .htaccess als "/leben-und-handwerk/550/" anzugeben.

Falls du wirklich mehrere Contenidoinstallationen bei einem Server betreiben willst, mach doch mehere Subdomains die jeweils als wwwroot die Contenidoinstallation haben. So sind sie sauber voneinander getrennt.
Von Supporter gibt es da ein gutes Beispiel zum Thema "Mehrmandantensystem" mit Mod Rewrite:
http://forum.contenido.org/viewtopic.ph ... 488#122488

Gruß
xmurrix
Rincewind
Beiträge: 54
Registriert: Di 20. Feb 2007, 14:10
Kontaktdaten:

Beitrag von Rincewind »

Ich habe tatsächlich 2 Installationen am Laufen.

auf das verzeichnis /leben-und-handwerk/ wird eine entsprechende Domain aufgeschaltet, so dass diese Installation auch ihren eigenen Root bekommt.
Der Change-Provider läuft... aber das geht natürlich nicht von gestern auf heute.

Ich schau mir das mit dem mehreren Mandaten nachher mal an.
Danke für den Link
xmurrix
Beiträge: 3213
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 16 Mal
Kontaktdaten:

Beitrag von xmurrix »

Rincewind hat geschrieben:Ich habe tatsächlich 2 Installationen am Laufen...
Dann liegen die Mandantenverzeichnisse jeweils unter "/1150/" und "/leben-und-handwerk/550/", also "/1150/cms/" und "/leben-und-handwerk/550/cms/"?
Wenn das so ist, muss die RewriteBase jeweils um den Ordner cms erweitert werden, also in "/1150/.htaccess" "RewriteBase /1150/cms/" und in "/leben-und-handwerk/550/.htaccess" "RewriteBase /leben-und-handwerk/550/cms/".

So sollte es funktionieren.

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

Beitrag von derSteffen »

Hallo,

Google hat mein Seite mit aktiviertem MR indeziert unter anderem leider auch so:
Ich habe mir jetzt überlegt in der htaccess eine Rule zu schreiben die besagt, dass alles was mit /cms/front_content.php in der URL auf die Fehlerseite umgelenkt werden soll.

Ist das eine gute Lösung?

Leider klappen meine Versuche in der htaccess nicht :-(

Code: Alles auswählen

Versuch 1:
RewriteRule /cms/front_content.php$ http://www.domain.de/fehler/fehlerseite.html [R=301,L]

Versuch 2:
RewriteRule http://www.domain.de/cms/front_content.php^ http://www.domain.de/fehler/fehlerseite.html [R=301,L]

Kann mir dabei bitte jemand behilflich sein?

Vielen Dank

Steffen
BagHira
Beiträge: 486
Registriert: Do 23. Feb 2006, 19:42
Wohnort: Tirschenreuth / Oberpfalz / Bayern
Kontaktdaten:

Beitrag von BagHira »

Hallo xmurrix,

ich hab mal ne Frage 8)

Was muss ich den einstellen, damit dein Plugin mir die folgende URL umschreibt:
http://www.handgewickelte-glasperlen.de ... ontent.php

herauskommen soll dann das hier:
http://www.handgewickelte-glasperlen.de

Theoretischer weise sollte die obere URL doch gar nicht mehr möglich sein, oder verstehe ich das was falsch?
Mir ist das jetzt in meinen Statistiken aufgefallen. Kann ich das ändern - wenn ja, wie stell ich das an?

Ich verwende C4.8.8 mit Plugin 0.4.5.
Gruß Holger

Träumer haben vielleicht keinen Plan, aber Realisten haben keine Vision.

Handgewickelte Glasperlen Facebook Google+
xmurrix
Beiträge: 3213
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 16 Mal
Kontaktdaten:

Beitrag von xmurrix »

Hallo,

du kannst den Aufruf von Seiten, die mit /cms/front_content.php beginnen sperren, schreibe in der .htacces die Zeile

Code: Alles auswählen

RewriteRule ^cms/front_content.php.*$ - [L]
einfach um in

Code: Alles auswählen

RewriteRule ^cms/front_content.php.*$ - [G,L]
Die erste Zeile sorgt dafuer, dass ein Request auf front_content.php trotz aktivem Mod Rewrite möglich ist, die zweite Zeile hingegen nicht. Dann wird bei allen Requests auf /cms/front_content.php ein HTTP-Header mit dem Statuscode 410 (Gone) ausgegeben.

Das sollte Google & Co davon abhalten, Seiten mit front_content.php in den Index aufzunehmen.
[nachtrag]
Vergiss den Vorschlag mit der Rewrite Rule in der .htaccess, das liefert den 410 er Statuscode auch bei SEO-URL, da die auch auf front_content.php umschrieben werden.
[/nachtrag]


Theoretisch sollte das auch mit einer robots.txt möglich sein

Code: Alles auswählen

User-agent: Googlebot
Disallow: /cms/front_content.php.*$
Oder auch im Header der Seite (Layout oder Modul) einfach ein Metatag wie folgt ausgeben:

Code: Alles auswählen

<?php if (strpos($_SERVER['PHP_SELF'], '/front_content.php') !== false) : ?>
    <meta name="robots" content="noindex, nofollow" />
<?php endif; ?>
Auch in der config.local.php ist das möglich. Wenn die Datei unter /cms/ nicht existriert, einfach anlegen und Requests mit front_content.php folgendermaßen abfangen:

Code: Alles auswählen

if (strpos($_SERVER['PHP_SELF'], '/front_content.php') !== false) {
    header('HTTP/1.0 404');
    exit();
}
Gruß
xmurrix
xmurrix
Beiträge: 3213
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 16 Mal
Kontaktdaten:

Beitrag von xmurrix »

Hallo,
BagHira hat geschrieben:...Was muss ich den einstellen, damit dein Plugin mir die folgende URL umschreibt:
http://www.handgewickelte-glasperlen.de ... ontent.php

herauskommen soll dann das hier:
http://www.handgewickelte-glasperlen.de...
das lässt sich im Plugin nicht einstellen. Lösungsmöglichkeiten zu einem ähnlichen Problem habe ich vorhin gepostet, das ist hier auf der gleichen Seite.

Wenn du von
http://domain/cms/front_content.php
auf
http://domain/
umleiten willst, kannst du in der /cms/config.local.php folgendes angeben:

Code: Alles auswählen

// bin mir nicht sicher ob /cms/front_content.php oder cms/front_content.php, einfach ausprobieren
if ($_SERVER['PHP_SELF'] == '/cms/front_content.php') { 
    header('Location: /', true, 404);
    exit();
}
Gruß
xmurrix
BagHira
Beiträge: 486
Registriert: Do 23. Feb 2006, 19:42
Wohnort: Tirschenreuth / Oberpfalz / Bayern
Kontaktdaten:

Beitrag von BagHira »

xmurrix hat geschrieben:Wenn du von
http://domain/cms/front_content.php
auf
http://domain/
umleiten willst, kannst du in der /cms/config.local.php folgendes angeben:

Code: Alles auswählen

// bin mir nicht sicher ob /cms/front_content.php oder cms/front_content.php, einfach ausprobieren
if ($_SERVER['PHP_SELF'] == '/cms/front_content.php') { 
    header('Location: /', true, 404);
    exit();
}
Hallo xmurrix,

vielen Dank für deine Schnelle Antwort, leider funktioniert das noch nicht so ganz.

gebe ich in der config.local.php folgendes an:

Code: Alles auswählen

$_SERVER['PHP_SELF'] == '/cms/front_content.php'
erhalte ich eine weise Seite, bei

Code: Alles auswählen

$_SERVER['PHP_SELF'] == 'cms/front_content.php'
passiert nichts und die URL schaut wie vorher aus. Jedoch verlängert sich die Ladezeit um ca. 1/3 *wunder*
Gruß Holger

Träumer haben vielleicht keinen Plan, aber Realisten haben keine Vision.

Handgewickelte Glasperlen Facebook Google+
xmurrix
Beiträge: 3213
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 16 Mal
Kontaktdaten:

Beitrag von xmurrix »

Du wolltest auf die Rootseite weiterleiten, dann ist der HTTP-Fehlercode 404 aus der header-Direktive zu entfernen oder gegen einen anderen zu ersetzen. Die Ausgabe des 404er Fehlers war in deinem Fall ein schlechtes Beispiel.

Code: Alles auswählen

if ($_SERVER['PHP_SELF'] == '/cms/front_content.php') { 
    header('Location: /'); // nur redirect
    header('Location: /', true, 301); // oder redirect mit statuscode 301 fuer  moved permanently
    exit();
}
Gruß
xmurrix
BagHira
Beiträge: 486
Registriert: Do 23. Feb 2006, 19:42
Wohnort: Tirschenreuth / Oberpfalz / Bayern
Kontaktdaten:

Beitrag von BagHira »

Hallo xmurrix,

ich habe ein bisschen gespielt,

mit folgenden Header-Anweisungen (welche ja eigentlich die Gleichen sind) erhalte ich einen Umleitungsfehler:

Code: Alles auswählen

<?
if ($_SERVER['PHP_SELF'] == '/cms/front_content.php') {
    header('Location: /'); // Variante 1
    header("Location: http://" . $_SERVER["HTTP_HOST"] . "/"); // Variante 2
    exit();
}
?>
Irgendetwas beisst sich da und ich kann nicht finden was bzw. wo es ist. Geschaut hab ich z.B. auch hier: http://jendryschik.de/wsdev/weiterleitung/ , da ich mich in der Richtung "Weiterleitung" überhaupt nicht auskenne.
Gruß Holger

Träumer haben vielleicht keinen Plan, aber Realisten haben keine Vision.

Handgewickelte Glasperlen Facebook Google+
Gesperrt