Wiki source for ModrewriteInSubdirectoryWorkaround


Show raw source

=====Mod_rewrite with Wikka in subdirectory doesn't work=====

>>See also: ModRewrite>>===Symptoms===
The installation path of Wikka (relative to the document root) is different from the path used to acess Wikka in the URL. Some examples might be:
Installation directory ##/www/wiki## acessed via http://www.example.com/wiki/
Installation directory ##/wiki## acessed via http://wiki.example.com/

===Cause===
If the path to the subdirectory is the same as the document root plus the subdirectory, the translation should work fine. However, if some kind of aliasing is taking place (as may be the case with hosted sites, though that is not the only possibility) then Apache won't be able to construct the correct URL without a little help.

===Applies to===
All Wikka versions
==Note==
Future versions of Wikka (> 1.1.6.0) may handle the workaround outlined below automatically.

===Solution===
Use the **##""RewriteBase""##** directive to tell Apache what the **URL** is for the directory Wikka is installled in. If, for example, Wikka is installed in the directory ##**/www/wiki**## but it is acessed using ""http://www.example.com""**/wiki**, you need to modify the **.htacess** file in the ##**/www/wiki**## directory (starting with line 7):
%%(xml;7)<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*/[^\./]*[^/])$ $1/
RewriteRule ^(.*)$ wikka.php?wakka=$1 [QSA,L]
</IfModule>
%%and add a ##""RewriteBase""## directive with the **/wiki** part of the URL:
%%(xml;7)<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /wiki
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*/[^\./]*[^/])$ $1/
RewriteRule ^(.*)$ wikka.php?wakka=$1 [QSA,L]
</IfModule>
%%
If you would rather add it to your Apache configuration file (httpd.conf), instead of .htaccess, you need to enclose it in a <Directory> and not use the ##""RewriteBase""## directive:
%%(xml)<Directory /usr/local/www/data/wiki>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*/[^\./]*[^/])$ $1/
RewriteRule ^(.*)$ wikka.php?wakka=$1 [QSA,L]
</Directory>
%% where the path /usr/local/www/data/wiki corresponds to the absolute server path where your Wikka is installed (change to match your configuration).

----
CategoryWorkaround
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki