AdvancedMod Rewrite Plugin 0.4.3 fr Contenido 4.8.7

####################################################################################################
TOC (Table of contents)

- BESCHREIBUNG
- CHANGELOG
- BEKANNTE BUGS
- FEATURES
- VORAUSSETZUNGEN
- INSTALLATION
- WICHTIGE NDERUNGEN
- FAQ
- ADVANCED MOD REWRITE THEMEN IM CONTENIDO FORUM
- SCHLUSSBEMERKUNG


####################################################################################################
BESCHREIBUNG

Das Plugin Advanced Mod Rewrite basiert auf die geniale Erweiterung Advanced Mod Rewrite fr 
Contenido, welches als Bundle von stese bis zur Contenido Version 4.6.15 entwickelt und betreut 
wurde.

Wichtiger Aspekt bei der Umsetzung war die Implementierung als Plugin mit so wenig wie mglichen 
Eingriffen in den Contenido Core (trotzdem ging es nicht ohne einige Anpassungen an bestimmten 
Sourcen).

Daher enthlt das Archiv einige berarbeitete Contenido Sourcen, die eventuell nicht auf dem 
neuesten Stand sein knnen.


####################################################################################################
CHANGELOG

2008-08-12 AdvancedMod Rewrite Plugin 0.4.3
    * bugfix: Added missing framework initialization to plugin installer
    * bugfix: Workaround for non set variables in globals_off.inc.php
    * bugfix: Corrected wrong handling of configuration parameter 'startfromroot'
    * bugfix: Article word separator was not used correct
    * change: New rule to catch another exploit in .htaccess
    * change: Improved performance of class ModRewrite
    * change: Extended ConfigBase and ConfigSerializer, added lifetime control for cached data
    * new:    Testscript (/cms/mr_test.php) to validate functionality of the plugin

2008-08-03 AdvancedMod Rewrite Plugin 0.4.0
    * change: Adapted to Contenido 4.8.7
    * bugfix: Error at validation of defined .htaccess file, if client docroot differs from Contenido 
              backend docroot
              (thanks to tono, see http://forum.contenido.org/viewtopic.php?p=120731#120731)
    * bugfix: Prevention of duplicated content, which occurs, if  prepending of root category to the 
              url is activated
              (thanks to philla, see http://forum.contenido.org/viewtopic.php?p=120618#120618)
    * change: Enabling routing definition from root
    * change: Removed execution of CEC_Hook to build URLs from $sess->url() and $sess->self_url()
    * new:    New Contenido_UrlBuilder_MR class based on Contenido UrlBuilder specifications.
              NOTE: Plugin is no more PHP4 compatible!

2008-07-20 AdvancedMod Rewrite Plugin 0.3.3
    * new:    Some new rules in htaccess to precatch common exploits
    * change: Removal of nonused function mr_get_setting_override()
    * bugfix: Calling of parse_url results in a PHP warning, if the URL is invalid
    * bugfix: Instantiating of cApiArticleLanguage throws an error in some cases
              (thanks to TripleM, see http://forum.contenido.org/viewtopic.php?p=120552#120552)
    * bugfix: Usage of $auth->url()/$auth->purl() returns Scriptname which isn't front_content.php
              (thanks to stefkey, see http://forum.contenido.org/viewtopic.php?p=120262#120262)

2008-06-22 AdvancedMod Rewrite Plugin 0.3.2
    * bugfix: Corrected wrong handling of category aliases
              (thanks to Supporter, see http://forum.contenido.org/viewtopic.php?p=119352#119352)

2008-06-18 AdvancedMod Rewrite Plugin 0.3.1
    * new:    Added SQL-Statements for pluginupdate
    * change: Adapted to Contenido 4.8.6
    * bugfix: Later setting of article urlname won't work
              (see http://forum.contenido.org/viewtopic.php?p=118754#118754)

2008-05-26 AdvancedMod Rewrite Plugin 0.3.0
    * change: Adapted to Contenido 4.8.4
    * bugfix: Usage of new configuration in ModRewriteController::_setIdart() instead of 
              clientsetting
    * new:    Feature to add default articlenames (userdefined name or name of startarticle) to 
              created category URLs
    * change: Some cleanup and improvement of query execution

2008-05-20: AdvancedMod Rewrite Plugin 0.2.1rc
    * bugfix: Hard coded path in include.mod_rewrite_content.php (thanks to tono)
    * bugfix: Added file_put_contents() function in file class.confighandler.php to support PHP4
              (thanks to tono)
    * bugfix: Added missed handling of defined rootdir for .htaccess file in 
              class.modrewritecontroller.php (thanks to tono)

2008-05-19: AdvancedMod Rewrite Plugin 0.2rc
    * first release


####################################################################################################
BEKANNTE BUGS

Momentan keine bekannt.


####################################################################################################
FEATURES

- Erstellung Suchmaschinenoptimierter URLs, Contenido interne URLs wie 
  /front_content.php?idcat=12&idart=34 werden z. B. als /kategoriename/artikelname.html umschrieben
- Untersttzung mehrerer Sprachen 
- Untersttzung mehrerer Mandanten im gleichen Verzeichnis 
- Umschreiben der URLs entweder bei der Ausgabe des HTML Codes oder beim Generieren des Codes der 
  Seiten 
- Routing von URLs (Umleiten eingehender URLs auf andere Ziel-URLs)


####################################################################################################
VORAUSSETZUNGEN

- Alle Voraussetzungen von Contenido 4.8.x gelten auch fr das Plugin
- PHP ab Version 5 (Das Plugin war bis Version 0.3.3 PHP 4.4.x kompatibel)
- Apache HTTP Server 2 mit Mod Rewrite 


####################################################################################################
INSTALLATION

- Backup der Contenido Installation also der Sourcen und der Datenbank (Damit es ein Weg zurck gibt) 
- Kopieren aller Dateien in die entsprechenden Verzeichnisse. 
- Schreibrechte fr PHP in das Verzeichnis /contenido/plugins/mod_rewrite/includes/ setzen. Das 
  Plugin speichert die Advanced Mod Rewrite Konfiguration der Mandanten in das Verzeichnis.
  (Der einfachste Weg ist das Setzen der Rechte auf 777, empfohlen ist eine restriktivere Vergabe) 
- In die Adresszeile des Browsers http://localhost/contenido/plugins/mod_rewrite/install.php 
  eingeben, dann sollte das Anmeldefenster des Backends erscheinen.
  ("http://localhost/" ist eventuell gegen anderen virtual Host oder Domainnamen ersetzen) 
- Im Backend anmelden 
- Advanced Mod Rewrite Plugin installieren 
  HINWEIS: Der Plugininstaller erstellt eine Kopie der Tabelle "{prefix}_plugins_{YYYYMMDD}", falls 
  die Tabelle die Voraussetzungen des Plugins nicht erfllt. Wenn vorher Plugins installiert wurden, 
  mssen die Eintrge von der Kopie der Tabelle manuell in die neue Tabelle bernommen werden. 
- Advanced Mod Rewrite konfigurieren (Im Backend unter Men "Content" -> "Advanced Mod Rewrite") 

Weitere Hinweise zur Installation/zu Upgrades:
Sollte ein Ugrade oder eine Neuinstallation des Plugins ntig sein, weil z. B. die Contenido-
Version einem Upgrade unterzogen wurde, ist auch ein Upgrade fr das Plugin nachzuziehen. Eine 
ausfhrliche Beschreibung dazu gibt es unter
http://forum.contenido.org/viewtopic.php?p=119362#119362


####################################################################################################
WICHTIGE NDERUNGEN

.htaccess:
----------
Die .htaccess wurde etwas entschlackt und leitet die Anfragen an index_controller.php im Ordner "cms"

cms/index_controller.php:
-------------------------
Analysiert die REQUEST_URI und lst sie in die Bestandteile auf (je nach Konfiguration in $client, 
$lang, $idart, $idcat usw.).
Gefundene Teile werden gleich gesetzt, am Ende wird dann die front_content.php includiert.

contenido/plugins/mod_rewrite/:
-------------------------------
Die Sourcen des Plugins.

contenido/classes/mp/class.cec_hook.php:
----------------------------------------
Contenido Extension Chainer Hook Klasse, steuert den Aufruf registrierter Chain-Funktionen.
Vorteil ist weniger Code, da meistens immer durch die Chain-Funktionen iteriert wird, dies wird von 
CEC_Hook erledigt.

contenido/classes/mp/class.confighandler.php:
---------------------------------------------
Klassen zur Verwaltung von serialisierten Kofigurationen in Dateien oder in der Datenbank.

contenido/classes/mp/class.mpdebug.php:
---------------------------------------
Eine Klasse zum Debuggen von Variablen und zur Ausgabe der Debuginformationen ohne das Layout zu 
zerstren (Inspiriert von symfony Frameworks Web Debug Toolbar).

contenido/includes/config.chains.php:
-------------------------------------
Einige neue Chains sind hinzugekommen, um die Funktionen des Advanced Mod Rewrite Plugins an 
bestimmten Stellen einzubinden: 
- Contenido.Article.conMoveArticles_Loop 
- Contenido.Article.conCopyArtLang_AfterInsert 
- Contenido.Article.conSyncArticle_AfterInsert 
- Contenido.Frontend.CreateURL 
- Contenido.Content.conGenerateCode 
- Contenido.Frontend.HTMLCodeOutput 


####################################################################################################
FAQ

Wie teste ich, ob mod_rewrite am Server richtig konfiguriert ist?
-----------------------------------------------------------------
Obwohl mod_rewrite am Server installiert ist, kommt es manchmal vor, dass es nicht funktioniert.

Das kann einfach getestet werden, erstelle eine .htaccess im Rootverzeichnis und schreibe folgendes 
rein:
[code]
RewriteEngine on
RewriteRule ^ http://www.contenido.org [R,L]
[/code]

Nach Eingabe der URL in die Adresszeile des Browsers, sollte auf www.contenido.org weitergeleitet 
werden.
Wenn nicht, dann kann eines der folgenden Punkte der Grund dafr sein:
Das mod_rewrite Modul ist nicht geladen, das ist in der httpd.conf zu setzen
[code]
LoadModule rewrite_module modules/mod_rewrite.so
[/code]

Die Direktive "AllowOverride" ist nicht korrekt gesetzt. Damit die Angaben in der .htaccess auch 
bentzt werden knnen, muss fr das betreffende Verzeichnis die Direktive "AllowOverride" in der 
httpd.conf angegeben werden:
[code]
# Beispielkonfiguration
<Directory "/var/www/mywebproject">
    AllowOverride FileInfo
</Directory>
[/code]

 
Wie richte ich Advanced Mod Rewrite fr eine Contenidoinstallation in einem Unterverzeichnis ein?
-------------------------------------------------------------------------------------------------

Als Beispiel gehen wir davon aus, dass Contenido im Verzeichnis /mypage/ unterhalb vom Webroot 
installiert wurde und das Mandantenverzeichnis per default /mypage/cms/ ist.

In der Pluginkonfiguration (Backend) den Pfad zur .htaccess Datei (aus Sicht des Web-Browsers) 
folgendermaen anpassen:
[code]
/mypage/
[/code]

Die /mypage/.htaccess ffnen und die RewriteBase folgendermaen anpassen:
[code]
RewriteBase /mypage/cms/
[/code]


Welche Einstellungen sind ntig, wenn das Mandantenverzeichnis das wwwroot ist?
-------------------------------------------------------------------------------
Normalerweise liegt das Mandantenverzeichnis innerhalb des wwwroot und ist ber 
http://domain.tld/cms/front_content.php erreichbar.
Manchmal ist es erwnscht, dass der Ordner /cms/ in der URL nicht sichbar sein soll, also 
erreichbar ber http://domain.tld/front_content.php.

In diesem Fall sind zwei Anpassungen ntig, damit Mod Rewrite korrekt funktioniert:
1. Die .htaccess Datei in das Verzeichnis /cms/ kopieren, da die Datei im wwwroot sein muss.
2. In der .htaccess die RewriteBase Option anpassen 

# von
RewriteBase /cms

# auf
RewriteBase / 


####################################################################################################
ADVANCED MOD REWRITE THEMEN IM CONTENIDO FORUM

Plugin Advanced Mod Rewrite fr Contenido 4.8.x:
http://www.contenido.de/forum/viewtopic.php?t=21578

Original Advanced Mod Rewrite 4.6.23:
http://www.contenido.de/forum/viewtopic.php?t=18454

Original Advanced Mod Rewrite 4.6.15:
http://www.contenido.de/forum/viewtopic.php?t=11162

Advanced Mod Rewriting Contenido 4.4.4:
http://www.contenido.de/forum/viewtopic.php?t=6713


####################################################################################################
SCHLUSSBEMERKUNG

Benutzung des Plugins auf eigene Gefahr!

Murat Purc, murat@purc.de
