Hallo Heiba,
willkommen im Contenido-Forum.
Es gibt 2 Möglichkeiten, die URL zur Mandantenseite ohne die cms-Ordner zu erstellen. Nehmen wir an, dass Contenido unter "/var/www" installiert wurde, also die Verzeichnisstruktur folgendermaßen ist:
.htaccess:
Sofern das mod_rewrite Modul auf deim Server aktiviert und richtig konfiguriert ist, kann man es mit ein paar Regeln in der .htaccess Datei lösen.
Das Documentroot der Seite sollte auf "/var/www" eingestellt sein.
Im Rootverzeichnis (/var/www) ist eine .htaccess anzulegen, die folgende Zeilen enthält:
Code: Alles auswählen
# Enable following lines to run PHP5 on 1und1.de (1and1.com)
# ----------------------------------------------------------
#AddType x-mapp-php5 .php
#AddHandler x-mapp-php5 .php
<IfModule mod_rewrite.c>
# Enable rewrite engine
# ---------------------
RewriteEngine on
# Specify a base URL-path for the rules
# -------------------------------------
RewriteBase /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]
</IfModule>
Damit werden ankommende Anfragen, an die front_content.php im cms/-Verzeichnis umschrieben. Es gibt ein paar Regeln für Ausnahmen und ein paar sicherheitsrelevante Regeln.
Domain/Subdomain:
Man kann das Mandantenverzeichnis unter einer Domain laufen lassen, und das Backend unter einer anderen Domain/Subdomain.
Einstellen des Mandantenverzeichnisses:
Dafür sollte der Documentroot der Domain auf das Verzeichnis "/var/www/cms" eingestellt werden.
Da der HTML-Pfad des Clients während der Installation gespeichert und sollte im Backend unter "Administration -> Mandanten" korrigiert werden.
Dort steht unter "Web-Adresse" meist
http://www.host.tld/cms/ drin, da das cms-Verzeichnis das Documentroot ist, ist der Wert in
http://www.host.tld/ zu ändern.
Wichtig:
Die Web-Adresse des Mandanten muss mit einem Slash (/) enden.
Die Web-Adresse des Mandanten wird zum Einen in den generierten Seiten in der Datenbank gespeichert, zum Anderen in der Session der Besucher. Damit die Änderung also sofort wirksam wird, sollten dies angepasst werden.
Das geht mit SQL-Statements, die an die DB abgesetzt werden, z. B. über phpMyAdmin.
Code: Alles auswählen
TRUNCATE TABLE `con_code`;
TRUNCATE TABLE `con_phplib_active_sessions`;
Das Prefix "con_" in Tabellennamen kann je nach Installation variieren.
Einstellen des Backends:
Für das Backend wird auch eine Domain/Subdomain benötigt, da das contenido-Verzeichnis nun außerhalb des Documentroots liegt, welches ja auf das Mandantenverzeichnis eingestellt ist.
In der Regel verwendet man dafür eine Subdomain - Es kann aber auch eine eigene Domain sein. Dazu ist in der Administration des Webpakets/Severs eine Subdomain zu erstellen, z. B. "administration.host.tld" oder "backend.host.tld" oder "contenido.host.tld". Die Bezeichnung spielt keine Rolle, es sollte einfach zu merken und sprechend sein.
Diese Subdomain ist auf das Verzeichnis "/var/www/contenido/" einzustellen. Die Änderung wird in der Regel innerhalb von 5 - 30 min. durchgeführt, kann auch schneller gehen und ist Provideranhängig.
Danach ist die Datei "contenido/includes/config.php" anzupassen. Darin kommt mehrfach die URL zum Backend vor, z. B.
http://www.host.tld/contenido/. Das Vorkommen der URL zum Backend ist gegen die neue Subdomain/Domain zu ersetzen.
Wichtig:
Die URL zum Backend in der Variable $cfg['path']['contenido_fullhtml'] muss mit einem Slash (/) enden.
Grüße
xmurrix