Jan

4

Contao: Installation in Unterverzeichnis, Zugriff über Hauptverzeichnis

Ich bin kein Fan davon irgendwelche Skripts oder CMS im Hauptverzeichnis zu installieren und so durfte ich mich die Tage damit beschäftigen wie man es am einfachsten hinbekommt, das ein normaler Besucher das Unterverzeichnis bei Contao nicht zu Gesicht bekommt (wobei letzteres kein Wunsch von mir ist, und mich auch nicht stört). Eine wirklich brauchbare Anleitung – wie z.B. bei WordPress – konnte ich leider nicht finden.

Die Idee das „DocumentRoot“ entsprechend anzupassen  funktioniert zwar (wenn man entsprechenden Zugriff auf die Apachekonfiguration hat), hat mir aber nicht gefallen, da man dabei nicht einfach parallel in einem anderen Unterverzeichnis etwas anderes testen kann (z.B. ein Update und dann via umbenennen das Update live schalten kann)…

Eine andere Möglichkeit ist die Verwendung von zusätzlichen mod_rewrite-Regeln im Hauptverzeichnis (die Regeln im Unterverzeichnis müssen entsprechend der Contao-Konfiguration angepasst sein) und einer kleinen Änderung der localconfig.php.

Hier meine mod_rewrite-Beispielregeln („/.htaccess“) bei der Verwendung des Unterverzeichnis „cms“.

RewriteEngine on

# Contao Regeln (Start)
RewriteCond %{REQUEST_URI} (ftp|https?):|/etc/ [NC,OR]
RewriteCond %{QUERY_STRING} (ftp|https?):|/etc/ [NC]
RewriteRule .* - [F,L]
# Contao Regeln (End)

# Alle Dateien/Verzeichnisse die nicht existieren, werden in cms "gesucht" (Start)
RewriteCond %{REQUEST_URI} !^cms/.*
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d [OR]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ /cms/$1 [L]
# Alle Dateien/Verzeichnisse die nicht existieren, werden in cms "gesucht" (End)

Hinzu kommt die angesprochene Änderung der „/cms/system/config/localconfig.php“, es muss hier einfach der Verweis auf das Unterverzeichnis entfernt werden, damit Contao Links mit dem Hauptverzeichnis als Basis generiert:

$GLOBALS['TL_CONFIG']['websitePath'] = '';

Sicherlich gehts irgendwie auch noch schöner, aber es funktioniert zumindest nach meinen bisherigen Tests soweit alles.

12 Kommentare bis jetzt

  1. Kommentar von phil:

    Hi. Dies funktioniert, allerding nur wenn dir url als http://domain.com aufgerufen wird. über http://www.domain.com gehts nicht. wie könnte man das ändern?

  2. Kommentar von proog:

    Hab gerade nochmal nachgeschaut, bei mir gehts… Kommt denn irgendne Fehlermeldung bzw. was sagt das Fehlerlog?

    (Wobei man eigentlich noch ne Regel einbauen sollte, das „ohne www“ auf www umgelenkt wird… wäre ja eigentlich schöner)

  3. Kommentar von phil:

    „ohne www” auf www umleitung wäre wirklich noch schön. mein problem liegt wohl am server. ich kann die domain mit „www“ nicht ansteuern, es kommt Server not found.

  4. Kommentar von phil:

    nun funktionierts. wie sieht es aber mit fehler-seiten wie 404 aus. gibt es da eine möglichkeit, dass diese im contao-design erscheinen?

  5. Kommentar von proog:

    „ohne www“ nach www: kommt, sobald ich die zeit finde das zu testen…

    fehlerseite: man muss nur eine entsprechende seite in contao dafür anlegen (typ: „404 Seite nicht gefunden“)

  6. Kommentar von phil:

    yep. merci, das habe ich geschafft. ein problem habe ich noch im backend. wenn man nun z.b einen artikelinhalt bearbeitet, „speichert und schliesst“, dann spickt es mich nicht auf den bearbeitenden artikel zurück, sondern auf meinen home-artikel. „speichern und zurück“ funktioniert wie immer. kennst du das phänomen?

  7. Kommentar von proog:

    eine allgemeingültige mod_rewrite-Regel für ohne www nach www ist z.B.

    # domain.de -> www.domain.de
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteCond %{HTTP_HOST} !^.*\..*\..* [NC] #nicht bei subdomains
    RewriteRule .* http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

    (kann z.B. oberhalb der anderen regeln eingefügt werden)

  8. Kommentar von Cuno:

    Hi proog. Ich bin relativ neu in Contao und habe Dein htaccess-Tipp dankbar aufgenommen, denn auch ich liebe aufgeräumte Rootverzeichnisse.
    Ich habe die htaccess nach Deinen Angaben ins Root kopiert und die localconfig angepasst. Im Frontend funktioniert’s problemlos. Im Backend aber habe ich Probleme mit einzelnen TinyMCE-Funktionen. So wird beim Einfügen von Bildern oder beim Anzeigen des HTML-Codes die innerhalb Contao definiert Fehlerseite angezeigt. Wo könnte das Problem liegen?
    Im cms-Ordner verwende ich die unbenannte default-htaccess mit folgenden beiden Zusatzeinträge:
    ErrorDocument 403 /cms/index.php
    ErrorDocument 404 /cms/index.php

    Bin dankbar für Lösungsansätze.

  9. Kommentar von proog:

    Wie rufst du das Backend auf? /contao oder /unterverzeichnis/contao? (ich würde letztere Variante dringend empfehlen, damit konnte ich bisher keine Probleme feststellen)

  10. Kommentar von Cuno:

    Ich rufe das Backend mit /untervezeichnis/contao auf. Beim Klicken auf Artikel wird aber /contao/main.php?do=article (ohne unterverzeichnis) aufgerufen. Die Fehlerseite erscheint leider auch, wenn ich das unterverzeichnis „von Hand“ einfüge.

  11. Kommentar von proog:

    Bei mir geht zwar das Unterverzeichnis nicht verloren, dennoch hatten die Regeln einen kleinen Fehler (ist nun im Artikel korrigiert). Über ein Feedback ob es bei dir nun funktioniert oder nicht würde ich mich freuen (insbesondere wenns geht 🙂 ).

  12. Kommentar von Cuno:

    Es hat geklappt! Super!!!
    Herzlichen Dank.

Kommentar hinterlassen

You must be logged in to post a comment.

Archiv

Zufällige Bilder

  • Lichtstärke: PD20 - Energiesparmodus
  • LED LENSER M7
  • Stabilisator: Aktiv

Kommentare (28 Tage)

Sonstiges


Bloggeramt.de