Ich hatte festgestellt , dass wenn PHP über CGI oder wie bei meinem Hoster über Fastcgi läuft die HTTP -Auth Funktionen nicht laufen (der Passwort-Dialog erscheint immer wieder).
Google lieferte mir Vorschläge wie ModfastCGI patchen oder FastCGI mit Parametern starten . Dies ist bei meinen Hoster nicht möglich , da ich keine Rootrechte hab.
Mit folgenden Anpassungen läuft es:
Datei .htaccess :
RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
Am Anfang der PHP Datei muss folgendes stehen:
// split the user/pass parts
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', base64_decode(substr($_SERVER['Authorization'], 6)));
Hier eine Beispiel Testanwendung:
< ?php
// split the user/pass parts
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', base64_decode(substr($_SERVER['Authorization'], 6)));
// open a user/pass prompt
if (!isset($_SERVER['Authorization'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Abrechen gedrückt ';
exit;
} else {
echo "
Hallo, ".$_SERVER['PHP_AUTH_USER'];
echo "
Dein Password:
".$_SERVER['PHP_AUTH_PW'];
}
?>
Wenn man auf einer IP-Adresse verschiedene Domains / Subdomains einrichten will geht mal folgendermassen vor.
Erstmal sollten die DNS Einträge auf den Server verweisen.
Dann richten wir Apache ein:
Dazu editieren wir die Datei /etc/apache/httpd.conf und fügen folgendes ein:
###############################################
NameVirtualHost *:80
NameVirtualHost *:443 #nur wenn ssl aktiv ist
ServerAdmin email@adesse.de
ServerName meine.domain.de
ServerAlias meine2.domain.de # Weitere aliase die den gleichen Inhalt bringen möglich
DocumentRoot /verzeichnis/wo/daten/auf/server/liegen
DirectoryIndex index.php index.html index.htm
SuexecUserGroup user user # wenn Scripte unter anderen User laufen sollen
Options FollowSymLinks
AllowOverride None
Options FollowSymLinks
AllowOverride AuthConfig
Order allow,deny
allow from all
ScriptAlias /cgi-bin/ /verzeichnis/wo/daten/auf/server/liegen/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews -Indexes
Order allow,deny
Allow from all
ErrorLog /Pfad/zum/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /pfad/zum/access.log combined
ServerSignature On
Alias /icons/ “/usr/share/apache2/icons/”
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
###################################################
Für jede Weitere Domain machen wir das gleiche .
Normalerweise schreibt Apache alle Zugriffe in die Datei access.log . Wenn man mehrere Virtual Hosts auf seinen Server hat , ist es schwer zuzuordnen auf welchem der Zugriff erfolgt. Daher ist es besser Verschiedene Access.log Dateien zu haben.
Damit man für jeden Virtualhost eine eigene Logdatei hat , passt man die httpd.conf wie in folgenden Beispiel an:
DocumentRoot “/var/srv/www/server.de”
ServerName www.server.de
ServerAdmin webmaster@server.de
ErrorLog /var/log/apache/server.de/error_log
#TransferLog /var/log/apache/server.de/access_log
CustomLog /var/log/apache/server.de/access_log “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-agent}i\”"
Hat man die Verzeichnistrktur auf seinem Server geändert , kann man mit Hilfe folgendes PHp-Script auf die neue neue seite umleiten. Man legt ihn an der alten Url ab:
Hat man eine Störenfried mit fester IP-Adresse kann man ihm auf folgende weise den Zugang verwehren .
In die .htaccess Datei oder der httpd.conf folgenden Eintrag :
Order deny,allow
Deny from 15.5.5.5
oder wenn man alle IPs aus dem Bereich 15.5.5.x blockieren will
Order deny,allow
Deny from 15.5.5
Man ertellt in das Verzeichnis eine Datei namens htaccess mit folgenden Inhalt :
#######################
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^Wget [OR]
RewriteCond %{HTTP_USER_AGENT} ^curl
RewriteRule ^.* – [F]
#############
nun können wget und curl auf die Seite nicht mehr zugreifen.
Wenn in der httpd.conf
AllowOverride None
eingetragen ist, werden alle .htaccess Dateien deaktiviert.
Als erstes installieren wir Apache2 inclusiv den Modulen mod_dav und mod_dav_fs
Wir erstellen die Verszeichnisse /var/dav und /var/dav/mydavserver mit
mkdir -p /var/dav/mydavserver
Wir richten Benutzernamen und Passwort ein:
htpasswd -c /var/dav/.davpasswd benutzername
Wir ertstellen eine Datei namens mod_conf.conf ins /verzeichnis /etc/apache mit folgenden Inhalt:
###################################
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
Alias /mydavserver /var/dav/mydavserver
DavMinTimeout 600
Options None
Dav On
Order allow,deny
Allow from all
AuthType Basic
AuthName “WebDAV Restricted Repository”
AuthUserFile /var/dav/.davpasswd
Require valid-user
# Location of the WebDAV lock database.
DavLockDB /var/lib/dav/lockdb
################ENDE mod_dav.conf ##########
in die Datei /etc/apache/httpd.conf
fügen wie folgende zeile ein:
include /etc/apache/mod_dav.conf
nun starten wir apache neu :
apachectl restart