Rewrite Modus
Auch verfügbar in English
1. Apache mod_rewrite
WackoWiki mit mod_rewrite verwenden
Wenn Apache das Modul mod_rewrite einkompiliert hat (und dein Provider "RewriteEngine On" auch ausführen lässt...),
ist es ganz einfach, URL rewriting einzustellen:
- kopiere die .htaccess-Datei, die bei WackoWiki mitgeliefert wird in dein Installationsverzeichnis
- setze in der Konfiguration
'rewrite_mode' => 1
1.1. Grundlagen
Mod_rewrite ist ein Modul für den Apache Webserver und schreibt die angeforderte URLs on the fly um. Es funktioniert beides in per-server context (Apache v2.x: apache2.conf
) und per-directory context (.htaccess
). Detaillierte Informationen findet man unter Apache Module mod_rewrite und URL Rewriting Guide.
- mod_rewrite ermöglicht:
-
http://www.example.com/Download
-
- mod_rewrite verhindert:
-
http://www.example.com/?page=Download
-
1.2. Wie man mod_rewrite aktiviert
Du benötigst einen Apache Webserver auf dem WackoWiki läuft und das Module mod_rewrite muss installiert und aktiviert sein.
mod_rewrite in der Apache Konfigurationsdatei (http.conf oder apache2.conf):
/apache/conf/http.conf
aktiviert:
LoadModule rewrite_module modules/mod_rewrite.so
deaktiviert
#LoadModule rewrite_module modules/mod_rewrite.so
1.2.1. AllowOverride All
Stelle sicher dass deine .htaccess Dateien nicht ignoriert werden: Stelle in deiner Apache Konfigurationsdatei (http.conf oder apache2.conf) für das Verzeichnis in dem dein Wiki ist folgendes sicher:
/apache/conf/http.conf
AllowOverride None
nicht gesetzt ist, weil sonst .htaccess Dateien werden ignoriert.
AllowOverride All
Beispiel mit AllowOverride All:
/apache/conf/http.conf
#Wacko URL-rewriting <Directory "/real/path/to/yoursubdir"> Options Indexes FollowSymLinks Includes ExecCGI # # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride All Order allow,deny Allow from all </Directory>
1.3. mit .htaccess
Falls man keine Rechte besitzt, um die httpd.conf
/ apache2.conf
Datei zu bearbeiten (z.B. bei Shared Hosting), dann kann man die .htaccess
-Methode nutzen, mit folgendem Inhalt:
In der Datei befinden sich keine vom Benutzer zu ändernde Bestandteile. Falls du irgendetwas durch Ändern der .htaccess beheben willst, dann bist du sehr wahrscheinlich auf dem falschen Weg.
wacko/.htaccess
# No user serviceable parts inside # If you want to fix anything by tuning htaccess - you're possibly on the wrong path <IfModule mod_env.c> SetEnv HTTP_MOD_ENV on </IfModule> <IfModule mod_rewrite.c> <IfModule mod_env.c> SetEnv HTTP_MOD_REWRITE on </IfModule> RewriteEngine on RewriteRule ^ index.php [QSA,L] </IfModule> <IfModule !mod_rewrite.c> <FilesMatch \.php$> # Apache 2.4 <IfModule mod_authz_core.c> Require all denied </IfModule> # Apache 2.2 <IfModule !mod_authz_core.c> Order Allow,Deny Deny from all </IfModule> </FilesMatch> <FilesMatch "^(admin|index)\.php$"> # Apache 2.4 <IfModule mod_authz_core.c> Require all granted </IfModule> # Apache 2.2 <IfModule !mod_authz_core.c> Order Allow,Deny Allow from All Deny from None </IfModule> </FilesMatch> </IfModule>
Die Datei .htaccess ist im Installationspaket von WackoWiki, welches du heruntergeladen hast, enthalten, und findet sich dort im wacko/
Ordner.
Falls du sie nicht findest, erstelle sie einfach (Zugriffserlaubnis: -rwxr-xr-x).
Alle Regeln, die man in eine .htaccess
-Datei eintragen kann, können auch direkt in die Server-Konfigurationsdateien eingetragen werden. Tatsächlich empfiehlt die offizielle Apache-Dokumentation die Verwendung von Server-Konfigurationsdateien anstelle von .htaccess
, da Apache auf diese Weise schneller arbeitet.
Das Setzen von Regeln in
.htaccess
ist jedoch praktisch, insbesondere bei mehreren Websites auf demselben Server. Es ist kein Neustart des Servers erforderlich, damit Änderungen wirksam werden, und es sind keine Root-Rechte erforderlich, um diese Regeln zu bearbeiten, was die Wartung vereinfacht und Änderungen mit einem unprivilegierten Konto möglich macht.
1.3.1. Anpassungen für Domain Factory
Für Wacko.5.0 habe ich in der .htaccess lediglich die Zeile
RewriteBase /
einfügen müssen. d(f) voelzke (18.01.2012 23:17)
1.4. ohne .htaccess
Wenn du die die httpd.conf
/ apache2.conf
Datei direkt bearbeiten willst, bitte achte darauf, dass du die .htaccess
Datei in deinem Wacko Ordner löschst oder umbenennst.
Füge jetzt die folgenden Zeilen in deine Apache Konfigurationsdatei:
/apache/conf/http.conf
#Wacko URL-rewriting Options Indexes Includes FollowSymLinks MultiViews AllowOverride All RewriteEngine on RewriteRule ^ index.php [QSA,L] Order allow,deny Allow from all
Starte deinen Webserver neu, damit die Änderungen aktiv werden!
2. Nginx rewrite
Im Rewrite-Modus wirkt sich die Nginx-Einstellung auf die URL des Verwaltungsbereichs aus. Der folgende Code kann verwendet werden.
In other locales, parse the URL
if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filename){ rewrite (.*) /index.php; }