View source for Rewrite Modus

Auch verfügbar in //((../English/ModRewrite English))//

{{toc numerate=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 **((Glossar/H/htaccess .htaccess))**-Datei, die bei WackoWiki mitgeliefert wird in dein Installationsverzeichnis
  - setze in der ((Konfiguration Konfiguration)) ##'rewrite_mode' => 1##

====Grundlagen====
Mod_rewrite ist ein Modul für den ((Glossar/A/Apache 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  ((https://httpd.apache.org/docs-2.4/mod/mod_rewrite.html Apache Module mod_rewrite)) und ((https://httpd.apache.org/docs/current/rewrite/intro.html URL Rewriting Guide)).

  1. mod_rewrite ermöglicht: 
    * ##~http://www.example.com/Download##
  2. mod_rewrite verhindert: 
    * ##~http://www.example.com/?page=Download##

====Wie man mod_rewrite aktiviert====
Du benötigst einen ((Glossar/A/Apache 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%%

=====AllowOverride All=====
Stelle sicher dass deine ((Glossar/H/htaccess .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 ((https://httpd.apache.org/docs-2.4/mod/core.html#allowoverride .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>
%%

====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 ((Glossar/H/htaccess .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).

%%(info type="note")
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.
%%

=====Anpassungen für Domain Factory=====
Für Wacko.5.0 habe ich in der .htaccess  lediglich die Zeile %%RewriteBase /%% einfügen müssen. ((http://www.df.eu/de/service/df-faq/technische-faq/htaccess/mod-rewrite/#acc5518 d(f)))  ((user:voelzke voelzke)) (18.01.2012 23:17)

====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!

===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;
}
%%


{{backlinks}}