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.


  1. mod_rewrite ermöglicht:
    • http://www.example.com/Download
  2. 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;
}