RRipley
Provided stuff for
- CleanUrls - multiple hostnames with different paths pointing to the same wiki
- PITS 01266 - refcount uses invalid XHTML markup
Well, I'm using the variant .htaccess and pmwiki.php in the Same Directory.
Works fine if you've attached one hostname to one address.
I then needed a solution to access my wiki by
http://example.com/in/this/subdir/
and
http://subdomain.example.com/
pointing to the same wiki.
Here's the result (for Apache 2.2 and later):
RewriteEngine On # No RewriteBase since we Base ourselves RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$ [NC] RewriteRule .? - [E=REWRITEBASE:/] RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC] RewriteRule .? - [E=REWRITEBASE:/in/this/subdir/] # more RewriteCond-RewriteRule pairs may follow further hostnames RewriteRule ^$ %{ENV:REWRITEBASE}pmwiki.php [L] RewriteRule ^index\.php$ %{ENV:REWRITEBASE}pmwiki.php [L] RewriteRule ^([A-Z0-9\xa0-\xff].*)$ %{ENV:REWRITEBASE}pmwiki.php?n=$1 [QSA,L]
First of all, RewriteBase
cannot be used anymore, because there's no conditional form of it.
Additionally I use a server environment variable to store the path that points to the wiki directory.
So, a RewriteCond
matches against a hostname via %{HTTP_HOST}
and if the pattern matches, the immediately following RewriteRule
is used: match whatever (=.?
), keep it unchanged (=-
) and set the environment variable REWRITEBASE
to the specified path (must precede and follow a /
). This combination can be done multiple times for every hostname you use on the same wiki.
Once the environment variable is set, it prepends each pmwiki.php
in the following rules.
Unfortunately a default value for REWRITEBASE
can't be set before Rewriting by
SetVar REWRITEBASE /
since the SetVar
module is one of the latest being executed within Apache. The SetVarIf
module would work indeed, but didn't checked it out further.
RRipley 2011-09-16 10:30pm UTC