<If> causes internal redirect

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxxxx
For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx




[Index of Archives]     [Open SSH Users]     [Linux ACPI]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Squid]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux