Knowledgebase:Portal:Hosting

From Cloudrexx Development Wiki
Jump to: navigation, search

Wichtige Bereiche

PHP-Versions Weiche via .htaccess

Bei einigen Hostings (z.B. Hoststar) gibt es mehrere installierte PHP Versionen, wobei mittels .htaccess Datei die gewünschte Engine für einen Dateityp zugewisesn werden kann. Folgendes Beispiel ist gültig für hoststar.ch Hostings (aktiviert PHP CGI v5.2)

Action php /cgi-php52/php
AddHandler php52 .php

404-Errors umleiten via .htaccess

Folgende Zeile in .htaccess schreiben:

    ErrorDocument 404 /index.php

Domain Umleitungen mittels .htaccess

Was ist mod_rewrite?

Mod_rewrite ist ein Modul des Apache Webservers. Das Modul mod_rewrite ist vielseitig einsetzbar, besonders mächtig ist es auch im Zusammenhang mit der Suchmaschinenoptimierung und Weiterleitungen von bestimmten Abfragen. Die folgenden Links zeigen anhand vieler Beispiele, wie Weiterleitungen und andere hilfreiche Dinge mittels .htaccess und mod_rewrite eingerichtet werden können.


Beispiel: Domainumleitung bei Mehrsprachigkeit

Beim Aufruf einer bestimmten Domain soll der Inhalt der Sprache (langId=3) angezeigt werden.

RewriteCond %{HTTP_HOST} ^domain.tld$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domain.tld$ [NC]
RewriteRule ^.*$ http://www.domain-neu.tld/index.php?%{QUERY_STRING}&langId=3 [R=301,L,NC]

Domainspezifisch umleiten in ein Unterverzeichnis

Situation: Man hat eine oder mehrere Domains als Alias eingerichtet, möchte aber auf den zusätzlichen Domains Inhalt aus einem Unterverzeichnis präsentieren, anstatt vom Hauptverzeichnis. Für jede Domain mit anderem Inhalt kann man den folgenden Block anpassen und in .htaccess einfügen.

# Rewrite-Engine einschalten
RewriteEngine On

# Domainnamen, die umgeleitet werden sollen. Oder-verknüpfte
# Bedingungen dank dem [OR] für mehrere Domains mit gleichem Inhalt.
RewriteCond %{HTTP_HOST} andere-domain.ch [OR]
RewriteCond %{HTTP_HOST} anderedomain.ch

# Wir wollen nur umleiten, wenn wir noch nicht umgeleitet 
# wurden. Sonst gibts ne Endlosschlaufe und laaaange URLs!
RewriteCond %{REQUEST_URI} !(andere-domain)

# Alles in der Klammer wird hinten wieder angehängt. So wird
# /index.php zu /andere-domain/index.php. [L], damit nicht
# weiter "rewrite"d wird.
RewriteRule ^(.*)$ /andere-domain/$1  [L]

Keine Berechtigungen mittels FTP

PHP wird meistens als Apache/Webserver-Modul mod_php ausgeführt. Dies führt dazu, dass Dateien bzw. Verzeichnisse, welche via PHP erstellt (mittels Contrexx CMS) wurden dem Webserver-Benutzer "apache" (UID: 48) zugeteilt werden. Wenn Sie nun via FTP auf diese Daten zugreifen wollen, erhalten Sie eine Berechtigungsfehlermeldung. Der FTP-Benutzer befindet sich in einer anderen Gruppe und hat somit standardmässig keine Rechte auf die via PHP erstellten Daten.

Um nun den Zugriff via FTP zu ermöglichen, müssen die Rechte der entsprechenden Dateien/Verzeichnisse auf 777 geändert werden. Dies muss auch via PHP erfolgen. Sie können dazu den folgenden einfachen PHP File Manager verwenden. Er besteht aus 1 Datei und sollte in einem eigenen Verzeichnis installiert werden (damit diese geschützt werden kann): PHP File Manager

Danach können Sie die Rechte via Button "Permissions" auf 777 ändern.

Startreihenfolge ändern

Damit beispielsweise die index.html Datei vor der index.php Datei geladen wird, kann der folgende .htaccess Datei Eintrag verwendet werden.

DirectoryIndex index.htm index.php

Hosting liefert Dateien nicht aus / 406 HTTP Status Code

Wird beim Anfordern einer Datei nicht deren Inhalt, sondern die HTTP Statusmeldung 406 zurück gegeben, so kann es sein, dass die angeforderte Datei von mod_security gesperrt ist.

Um dies zu umgehen, muss mod_security deaktiviert werden. Erstellen Sie dazu eine .htaccess Datei im Verzeichnis, in welchem sich die betroffene Datei befindet und fügen Sie den folgenden Inhalt ein:

SecFilterEngine Off

Zeichensatz der HTML Dokumente erzwingen

Wenn der Webserver Dokumente in einem falschen Zeichensatz ausgibt, kann mittels einem kleinen Trick der korrekte Zeichensatz erzwungen werden. Voraussetzung ist, dass PHP vorhanden ist. Das folgende Beispiel erzwingt den Webserver, dass HTML Dateien (.htm/.html) im Zeichensatz ISO-8859-1 ausgegeben werden. Erstellen Sie dazu eine .htaccess Datei mit dem folgenden Inhalt auf dem Server:

AddType application/x-httpd-php .htm .html
php_value default_charset ISO-8859-1