httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From gobbleda...@Safe-mail.net
Subject [users@httpd] <If> causes internal redirect
Date Sat, 15 Aug 2015 18:36:58 GMT
Version: Apache 2.4.10 (Debian Jessy), worker MPM

This works how I expect:

<VirtualHost *:80>
   DocumentRoot /var/www/html
   LogLevel trace8
   RewriteEngine on

   RewriteCond %{REQUEST_URI} ^/dir/file2.html
   RewriteRule .* /var/www/html/file2.html [L]
</VirtualHost>

Debug log: https://pastebin.ca/raw/3107063

It recognizes /var/www/html/file2.html as a local path and serves up that file.

This does not work the same:

<VirtualHost *:80>
   DocumentRoot /var/www/html
   LogLevel trace8
   RewriteEngine on

   <If "1 -eq 1">
      RewriteCond %{REQUEST_URI} ^/dir/file2.html
      RewriteRule .* /var/www/html/file2.html [L]
   </If>
</VirtualHost>

Debug log: https://pastebin.ca/raw/3107064

Adding the <If> causes Apache to treat /var/www/html/file2.html as a URI and now an
internal redirect is made, and the request fails (and that is just not what should happen).
The <If> expression doesn't matter, any matching expression acts the same. I've tried
lots of variations such as [END] and different directories and paths and gotten the same result.
The important part is that just adding <If> makes the rewrite act very different.

I'm not looking for an alternative or a workaround, I actually need to know why the <If>
causes this to happen. It seems like a bug to me. I haven't tried 2.4.16 but there are no
related changelog entries between 2.4.10 and 2.4.16.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


Mime
View raw message