dokuwiki not in root problem of regexp

Jiff nginx-forum at
Sat Jun 30 14:25:41 UTC 2012

Hi Francis,

> > Original dirs exclusion: 
> >    location ~ /(data|conf|bin|inc)/ {
> >       deny all;
> >    }
> > 
> > Of course, this won't work w/ my changes,
> ....why "of course"?

I'm cursed w/ IT & electronics: they hate me,
I must have pissed off Murphy in another live:):(
> The original example wanted to block access to
> /data/ and
> /something/data/; you now want to block access to
> /dokuwiki/data/
> and /dokuwiki/something/data/.
> This location block will match all of those
> (depending on what else is
> in your config file).
> > In my mind it _should_ be: "location
> ~/dokuwiki/(data|conf|bin|inc)/"
> That looks to me like it should also work...

Yep, I read the docs and found a useful link toward
perl regexps, so I thought this would have worked
(I must say I didn't understand it fully: eg: at this time
I don't really know the difference between .* and (.*)  ).

> What one url did you access to test this?

conf say:  root
(I've set an authoritative zone for it in the LAN,
I access it by:
> What response did you see? - - [30/Jun/2012:07:37:40 +0200] "GET
/dokuwiki/lib/tpl/default/images/button-dw.png HTTP/1.1" 444 0
"" "Mozilla/5.0 (X11; U; Linux i686;
en-US; rv: Gecko/20120603 Iceape/2.0.11"

444 is what I intend to use when stable; however, for 
tests my block is:
location ~ /dokuwiki/(data|conf|bin|inc)/ {
   return 403;

> What response did you expect to see?

a 200 one

> If you provide your config file, or at least the
> full list of top-level
> location definitions, someone may be able to point
> out why the second
> and third answers differ.

root               /var/www;
listen             80;
index             doku.php;

location ~ \.php$ {
   if (!-f $request_filename) { 
      return   403;
   include            fastcgi_params;
   fastcgi_index    doku.php;
   fastcgi_param   SCRIPT_FILENAME    
   # PB:   Sometimes a 400 is returned
   # SOLT:
   fastcgi_pass     unix:/var/run/php5-fpm.socket;

# Common conf file between HTTP & HTTPS confs


in COMMON file:

location ~ /dokuwiki/(data|conf|bin|inc)/ {
   return 403;

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$  {
   expires             30d;
   access_log       off;
   log_not_found   off;

location /dokuwiki {
   location / {
   index     doku.php;
   try_files $uri $uri/ @dokuwiki;

location   @dokuwiki {
   rewrite    ^/dokuwiki/_media/(.*)           
/lib/exe/fetch.php?media=$1         last;
   rewrite    ^/dokuwiki/_detail/(.*)            
/lib/exe/detail.php?media=$1        last;
   rewrite    ^/dokuwiki/_export/([^/]+)/(.*)  
/doku.php?do=export_$1&id=$2   last;
   rewrite    ^/dokuwiki/(.*)                      
/doku.php?id=$1&$args               last;


This matches the link I read about regexps.
> Does the example config in
> _id=2388 provide any
> useful hints?

Oh, I see; but there's something strange: he only modify one path;
but others nest in the same place, so he logically should have
split the original block in 4 blocks, no? (last post).

> Good luck with it,


This night, I found that the unstable Debian pkg (last version)
also fit into stable branch, so I flipped in it (easier maintenance).

Now, I'm gonna restart and modify my nginx conf+DW
according to all information you gave me.

I'll keep you aware about the issue.

Posted at Nginx Forum:,228124,228145#msg-228145

More information about the nginx mailing list