Rewrite Modus

Auch verfügbar in English


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 Konfigurationsdatei 'rewrite_mode' = > 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 v1.x: httpd.conf, Apache v2.x: apache2.conf) und per-directory context (.htaccess). Detaillierte Informationen findet man unter Apache Module mod_rewrite und URL Rewriting Guide.


So was macht es mit WackoWiki?!

  1. mod_rewrite ermöglicht:
    • http://www.example.com/Download
  2. mod_rewrite verhindert:
    • http://www.example.com/index.php?page=Download
    • http://www.example.com/?page=Download (ab R5.5)

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


deaktiviert

#LoadModule rewrite_module modules/mod_rewrite.so

aktiviert:
LoadModule rewrite_module modules/mod_rewrite.so

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>

3. mit .htaccess

Falls du keine Rechte besitzt um die httpd.conf / apache2.conf Datei zu editieren (z.B. bei gemieteten Webspace) oder du willst es einfach nicht,
dann musst du die .htaccess-Methode (vergiss nicht den Punkt!) nutzen, mit folgendem Inhalt:
/wackowiki/.htaccess

3.1. ab R5.0

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond    %{REQUEST_FILENAME}  -d
 RewriteRule ^(.*/[^\./]*[^/])$ $1/
 RewriteRule ^admin\.php$ admin.php [L]
 RewriteRule ^(robots\.txt)$ robots.txt [L]
 RewriteRule ^(sitemap\.xml)$ sitemap.xml [L]
 RewriteRule ^(favicon\.ico)$ favicon.ico [L]
 RewriteRule ^(.*)$ index.php?page=$1 [QSA,L]
</IfModule>

3.2. ab R5.5

# 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).

3.3. 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)

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
<Directory "/real/path/to/yoursubdir">
    Options Indexes Includes FollowSymLinks MultiViews
    AllowOverride All
    RewriteEngine on
    RewriteRule ^(index.php?.*)$ - [S=1]
    RewriteRule ^(.*)$ /yoursubdir/index.php?page=$1 [QSA,PT,L]
    Order allow,deny
    Allow from all
</Directory>

Starte deinen Webserver neu, damit die Änderungen aktiv werden!


  • (aufrufen /echter/pfad/zu/deinem/unterverzeichnis/ wie http://www.example.com/deinunterverzeichnis/)
    • Alias /deinunterverzeichnis /echter/pfad/zu/deinem/unterverzeichnis/

5. Links

http://de.selfhtml.org/servercgi/server/rewrite.htm