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

Grundlagen

Mod_rewrite ist ein Modul für den Apache Webserver (v1.x und v2.x) 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

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) deaktiviert:
/apache/conf/http.conf

#LoadModule rewrite_module modules/mod_rewrite.so

mod_rewrite in der Apache Konfigurationsdatei (http.conf oder apache2.conf) aktiviert:
LoadModule rewrite_module modules/mod_rewrite.so


AllowOverride All

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

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond    %{REQUEST_FILENAME}  -d
 RewriteRule ^(.*/[^\./]*[^/])$ $1/
 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>

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

Anpassungen für Domain Factory

Version 1

Auch nach langer Suche habe ich keinen Grund gefunden, aber die o.g. Rewrite funktioniert bei d(f nicht. Wer trotzdem auf schöne URLs nicht verzichten möchte, der muss seine .htaccess mit folgendem Inhalt füllen:

RewriteEngine on
RewriteRule ^$                        /index.php  [L]
RewriteCond %{REQUEST_FILENAME}       !-f
RewriteCond %{REQUEST_FILENAME}       !-d
RewriteRule (.*)                      /index.php?page=$1  [QSA,L]

Der Rest bleibt identisch. TheBone /07.05.2006 02:13/

Version 2

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)

Für Admins:

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

ist nicht gesetzt. Weil dann .htaccess Dateien werden ignoriert.
AllowOverride All

funktioniert sicher, keine Ahnung wie es mit anderen Werten ist.
CarlDevos /24.02.2005 17:26/


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>

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!


Links

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

Aufgaben

  • Wie erkenne ich ob mod_rewrite verfügbar ist -> phpinfo() ?

Warum ist das in Unterverzeichnissen?

<IfModule mod_rewrite.c>
 RewriteEngine off
</IfModule>