Hi,
This is something that has changed in 2.4 compared to 2.2.
When I follow the simple scenario (attached file) in a fresh
install of apache, mod_dir is affecting the first value of
DirectoryIndex to my request before it is being proxied.
In 2.2, I was used to browse "https:/example,com/foo/" and have
this being proxied to a backend as "https://example2.com/bar/";.
But now in 2.4.7, mod_dir is first converting "/foo/" to
"/foo/index.html" and then sending the proxy request as
"/bar/index.html".
Do you know if this is an intended feature or a bug? I would
expect the backend, and not the frontend, to decide what
it wants to add to a url ending by "/".
The code in mod_dir has changed and there's a section with a comment
saying that it steps aside when it detects it is inside a mod_rewrite
fixup. It seems to be missing a provision for proxy requests.
rbowen helped me test this against 2.4.17/fedora. I tested it against
2.4.10/debian jessie with the same result.
Thanks! Cheers.
-jose
Scenario for mod_dir and mod_rewrite bug
Tested against 2.4.17 in a fresh fedora install (Thanks rbowen!)
I have this setup
/foo/.htaccess
/bar/echo.php
Server runs in localhost.
1. In your apache config, make sure you have the DirectoryIndex directive
e.g.
DirectoryIndex index.html
2. Put the following php script under /bar/echo.php Its goal is to echo
the request URI. You can do it with another script if you want:
[[
$ cat echo.php
]]
3. Put this .htaccess under /foo/.htaccess
[[
$ cat .htaccess
RewriteEngine on
RewriteBase /foo
RewriteRule ^(.*)$ http://localhost/bar/echo.php/$1 [P,L]
]]
4. Try the test
GET -Se http://localhost/foo/
If you get back:
Requested: ...echo.php/index.html
# index.html is the first value of my DirectoryIndex directive
You see the bug, mod_dir added the first value of DirectoryIndex
before doing the proxy request.