mit mod_rewrite kann man nur schwer lesbare URLs in angenehmere umwandeln und auch Suchmaschinen eine bessere Indizierung ermöglichen.
Wenn man eine Domain oder eine Seite auf eine neue URL umziehen lässt, sollte man korrekt den HTTP-Status 301 (moved permanently) senden. Dann werden sich auch Suchmaschinen die neue URL merken und man bleibt im Suchindex.
Die folgendene Konfiguration kann man global in der Apache-Konfiguration einstellen oder in einer .htaccess-Datei im Stammverzeichnis hinterlegen.
RewriteEngine On RewriteRule ^(.*)$ http://www.NEUE-SEITE.de/$1 [R=301,L] RewriteRule .+ http://www.NEUE-SEITE.de/ [R=301,L]
Wenn rigeros alle (alten) URLs auf die neue Startseite gehen sollen:
RewriteEngine On RedirectMatch (.*) http://www.NEUE-SEITE.de [R=301,L]
Hiermit hat man die Möglichkeit, das rotieren der Logdateien auf Mitternacht zu legen.
mv access_log access_log.old mv error_log error_log.old apachectl graceful sleep 600 gzip access_log.old error_log.old
Hiermit wird die Logdatei immer die Logs für genau 24 Stunden enthalten. Gezählt wird ab Prozess-Start.
CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/access_log 86400" common
Möchte man per Knopfdruck ein Script ausführen, dann macht man das per CGI.
In der Konfiguration muss diese Zeile stehen,
ScriptAlias /cgi-bin/ "/srv/www/cgi-bin/"
damit die URL „www.server.de/cgi-bin/“ über den Browser überhaupt erst ansprechbar ist.
Damit die darin liegenden Dateien beim Aufruf auch als Scripte abgearbeitet werden, muss noch die folgende Sektion in die Konfiguration aufgenommen werden:
<Directory "/srv/www/cgi-bin">
AllowOverride None
Options +ExecCGI -Includes
Order allow,deny
Allow from all
</Directory>
Das Verzeichnis /srv/www/cgi-bin/ muss ausführbar sein und dem selben Benutzer gehören, unter dem der Apache läuft.
z.B.:
chmod -R 0750 /srv/www/cgi-bin/ chown -R www:www /srv/www/cgi-bin/
In diesem Beispiel ist /home/http/privat/ das DocumentRoot!
Damit die .htaccess-Datei vom Apache auch gelesen wird,
muss AllowOverride eingeschaltet werden, z.B.:
AllowOverride AuthConfig
# vi /home/http/privat/.htaccess AuthType Basic AuthName "Privatverzeichnis" AuthUserFile "/home/etc/httpd/.htpasswd" AuthGroupFile /dev/null require valid-user
Trockenübung, so wird keine Datei geschrieben, sondern das Ergebnis lediglich angezeigt:
# htpasswd -n fritz # htpasswd -nb fritz geheim
Benutzer mit Passwort anlegen:
# htpasswd -c /home/etc/httpd/.htpasswd fritz New password: Re-type new password: Adding password for user fritz
Passwort eines Benutzers ändern:
# htpasswd /home/etc/httpd/.htpasswd fritz
neuen Benutzer mit Passwort hinzu fügen:
# htpasswd /home/etc/httpd/.htpasswd otto
Es ist auch möglich das Passwort direkt auf der Kommandozeile mit zu übergeben:
# htpasswd -b /home/etc/httpd/.htpasswd fritz geheim Updating password for user fritz
# htpasswd -b /home/etc/httpd/.htpasswd otto geheim Adding password for user otto
Benutzer löschen:
# htpasswd -D /home/etc/httpd/.htpasswd otto
# cd /usr/ports/www/apache2/ # make WITH_SUEXEC=yes WITH_THREADS=yes install && make clean
# suexec -V: -D AP_DOC_ROOT="/usr/local/www/data" -D AP_GID_MIN=1000 -D AP_HTTPD_USER="www" -D AP_LOG_EXEC="/var/log/httpd-suexec.log" -D AP_SAFE_PATH="/usr/local/bin:/usr/local/bin:/usr/bin:/bin" -D AP_UID_MIN=1000 -D AP_USERDIR_SUFFIX="public_html"
Wichtig sind für uns hier folgende Angaben:
Der Apache läuft in diesem Beispiel mit den folgenden Rechten (siehe /usr/local/etc/apache2/httpd.conf):
User www
Group www
Der User des Webacounts (suEXEC) hat die Rechte
User webuser
Group webgroup
Am sinnvollsten legt man das Web-Verzeichnis in “/var“ an.
# make -p /var/www/webuser/cgi-bin # fuer die CGI-Scripte # make -p /var/www/webuser/htdocs # fuer die HTML-Dateien # make -p /var/www/webuser/log # fuer die LOG-Dateien
chown -R webuser /var/www/webuser chgrp -R www /var/www/webuser chmod -R 750 /var/www/webuser chmod -R 755 /var/www/webuser/cgi-bin chgrp -R webgroup /var/www/webuser/cgi-bin chmod -R 770 /var/www/webuser/htdocs chown -R 0 /var/www/webuser/logs chgrp -R users /var/www/webuser/logs chmod -R 650 /var/www/webuser/logs
# rm -f /usr/local/www/data # ln -s /var/www /usr/local/www/data
# vipw
webuser:*:2000:2000::0:0:Unprivileged user:/nonexistent:/sbin/nologin
# vigr
webgroup:*:2000
Der zukuenftige Webserver wird die IP „192.168.0.10“ und den Namen „musterweb.de“ erhalten. Jeder Rechner, der auf den Webserver zugreifen soll, braucht diesen Eintrag in der Datei “/etc/hosts“:
192.168.0.10 musterweb.de
Oder man richtet sich einen eigenen DNS ein.
# vi /usr/local/etc/apache2/httpd.conf
NameVirtualHost musterweb.de
SuexecUserGroup webuser webgroup
ServerAdmin webmaster@musterweb.de
DocumentRoot /usr/local/www/data/webuser/htdocs
ScriptAlias /cgi-bin/ "/usr/local/www/data/webuser/cgi-bin/"
ServerName musterweb.de
ErrorLog /usr/local/www/data/webuser/log/error_log
CustomLog /usr/local/www/data/webuser/log/access_log common
(einfach unten anhängen…)
# vi /etc/rc.conf
apache2_enable="YES"
START:
# /usr/local/etc/rc.d/apache2.sh stop # /usr/local/etc/rc.d/apache2.sh start