Attaching debdiff with patch applied.

** Attachment added: "trusty-sru-debdiff"
   
https://bugs.launchpad.net/ubuntu/trusty/+source/apache2/+bug/1394403/+attachment/4445979/+files/trusty-sru-debdiff

** Description changed:

+ [Test Case]
+ 
+ Setup
+ Apache 2.4.7
+ * mod_rewrite
+ * mod_ajp
+ * mod_dir
+ 
+ Tomcat
+ * Listening on Port 9001
+ 
+ Apache with a .htaccess in the example.net VirtualHost
+ 
+   RewriteEngine On
+   RewriteRule ^(.*)$ ajp://localhost:9001/$1 [P]
+ 
+ 
+ Expected:
+ Return from Tomcat
+ 
+   HTTP Status 404 - /
+ 
+ Reality:
+ Return from Tomcat
+ 
+   HTTP Status 404 - /index.html
+ 
+ 
+ Workaround for this particular setup was to either disable mod_dir or disable 
DirectoryIndex in .htaccess.
+ 
+ Or on VirtualHost context use ProxyPass.
+ 
+   ProxyPass / ajp://localhost:9001/
+   ProxyPassReverse / ajp://localhost:9001/
+ 
+ 
+ [Impact]
+ 
+ With DirectoryIndex disabled:
+ <pre>
+ [Thu Apr 30 13:55:18.761066 2015] [rewrite:trace3] [pid 31422] 
mod_rewrite.c(468): [client XXX.XXX.XXX.XXX:38052] XXX.XXX.XXX.XXX - - 
[example.net/sid#7fc6ddd849f8][rid#7fc6ddcb50a0/initial] [perdir 
/home/www-data/example.net/] strip per-dir prefix: /home/www-data/example.net/ 
-> 
+ [Thu Apr 30 13:55:18.761191 2015] [rewrite:trace3] [pid 31422] 
mod_rewrite.c(468): [client XXX.XXX.XXX.XXX:38052] XXX.XXX.XXX.XXX - - 
[example.net/sid#7fc6ddd849f8][rid#7fc6ddcb50a0/initial] [perdir 
/home/www-data/example.net/] applying pattern '^(.*)$' to uri ''
+ [Thu Apr 30 13:55:18.761215 2015] [rewrite:trace2] [pid 31422] 
mod_rewrite.c(468): [client XXX.XXX.XXX.XXX:38052] XXX.XXX.XXX.XXX - - 
[example.net/sid#7fc6ddd849f8][rid#7fc6ddcb50a0/initial] [perdir 
/home/www-data/example.net/] rewrite '' -> 'ajp://localhost:9001/'
+ [Thu Apr 30 13:55:18.761232 2015] [rewrite:trace2] [pid 31422] 
mod_rewrite.c(468): [client XXX.XXX.XXX.XXX:38052] XXX.XXX.XXX.XXX - - 
[example.net/sid#7fc6ddd849f8][rid#7fc6ddcb50a0/initial] [perdir 
/home/www-data/example.net/] escaped URI in per-dir context for proxy, 
ajp://localhost:9001/ -> ajp://localhost:9001/
+ [Thu Apr 30 13:55:18.761245 2015] [rewrite:trace2] [pid 31422] 
mod_rewrite.c(468): [client XXX.XXX.XXX.XXX:38052] XXX.XXX.XXX.XXX - - 
[example.net/sid#7fc6ddd849f8][rid#7fc6ddcb50a0/initial] [perdir 
/home/www-data/example.net/] forcing proxy-throughput with ajp://localhost:9001/
+ [Thu Apr 30 13:55:18.761259 2015] [rewrite:trace1] [pid 31422] 
mod_rewrite.c(468): [client XXX.XXX.XXX.XXX:38052] XXX.XXX.XXX.XXX - - 
[example.net/sid#7fc6ddd849f8][rid#7fc6ddcb50a0/initial] [perdir 
/home/www-data/example.net/] go-ahead with proxy request 
proxy:ajp://localhost:9001/ [OK]
+ </pre>
+ 
+ With DirectoryIndex enabled:
+ <pre>
+ [Thu Apr 30 13:58:37.954876 2015] [rewrite:trace3] [pid 31419] 
mod_rewrite.c(468): [client XXX.XXX.XXX.XXX:38156] XXX.XXX.XXX.XXX - - 
[example.net/sid#7fc6ddd849f8][rid#7fc6ddcb10a0/initial] [perdir 
/home/www-data/example.net/] strip per-dir prefix: /home/www-data/example.net/ 
-> 
+ [Thu Apr 30 13:58:37.954930 2015] [rewrite:trace3] [pid 31419] 
mod_rewrite.c(468): [client XXX.XXX.XXX.XXX:38156] XXX.XXX.XXX.XXX - - 
[example.net/sid#7fc6ddd849f8][rid#7fc6ddcb10a0/initial] [perdir 
/home/www-data/example.net/] applying pattern '^(.*)$' to uri ''
+ [Thu Apr 30 13:58:37.954947 2015] [rewrite:trace2] [pid 31419] 
mod_rewrite.c(468): [client XXX.XXX.XXX.XXX:38156] XXX.XXX.XXX.XXX - - 
[example.net/sid#7fc6ddd849f8][rid#7fc6ddcb10a0/initial] [perdir 
/home/www-data/example.net/] rewrite '' -> 'ajp://localhost:9001/'
+ [Thu Apr 30 13:58:37.954959 2015] [rewrite:trace2] [pid 31419] 
mod_rewrite.c(468): [client XXX.XXX.XXX.XXX:38156] XXX.XXX.XXX.XXX - - 
[example.net/sid#7fc6ddd849f8][rid#7fc6ddcb10a0/initial] [perdir 
/home/www-data/example.net/] escaped URI in per-dir context for proxy, 
ajp://localhost:9001/ -> ajp://localhost:9001/
+ [Thu Apr 30 13:58:37.954968 2015] [rewrite:trace2] [pid 31419] 
mod_rewrite.c(468): [client XXX.XXX.XXX.XXX:38156] XXX.XXX.XXX.XXX - - 
[example.net/sid#7fc6ddd849f8][rid#7fc6ddcb10a0/initial] [perdir 
/home/www-data/example.net/] forcing proxy-throughput with ajp://localhost:9001/
+ [Thu Apr 30 13:58:37.954977 2015] [rewrite:trace1] [pid 31419] 
mod_rewrite.c(468): [client XXX.XXX.XXX.XXX:38156] XXX.XXX.XXX.XXX - - 
[example.net/sid#7fc6ddd849f8][rid#7fc6ddcb10a0/initial] [perdir 
/home/www-data/example.net/] go-ahead with proxy request 
proxy:ajp://localhost:9001/ [OK]
+ [Thu Apr 30 13:58:37.955023 2015] [rewrite:trace3] [pid 31419] 
mod_rewrite.c(468): [client XXX.XXX.XXX.XXX:38156] XXX.XXX.XXX.XXX - - 
[example.net/sid#7fc6ddd849f8][rid#7fc6ddcb30a0/subreq] [perdir 
/home/www-data/example.net/] strip per-dir prefix: 
/home/www-data/example.net/index.html -> index.html
+ [Thu Apr 30 13:58:37.955036 2015] [rewrite:trace3] [pid 31419] 
mod_rewrite.c(468): [client XXX.XXX.XXX.XXX:38156] XXX.XXX.XXX.XXX - - 
[example.net/sid#7fc6ddd849f8][rid#7fc6ddcb30a0/subreq] [perdir 
/home/www-data/example.net/] applying pattern '^(.*)$' to uri 'index.html'
+ [Thu Apr 30 13:58:37.955076 2015] [rewrite:trace2] [pid 31419] 
mod_rewrite.c(468): [client XXX.XXX.XXX.XXX:38156] XXX.XXX.XXX.XXX - - 
[example.net/sid#7fc6ddd849f8][rid#7fc6ddcb30a0/subreq] [perdir 
/home/www-data/example.net/] rewrite 'index.html' -> 
'ajp://localhost:9001/index.html'
+ [Thu Apr 30 13:58:37.955086 2015] [rewrite:trace2] [pid 31419] 
mod_rewrite.c(468): [client XXX.XXX.XXX.XXX:38156] XXX.XXX.XXX.XXX - - 
[example.net/sid#7fc6ddd849f8][rid#7fc6ddcb30a0/subreq] [perdir 
/home/www-data/example.net/] escaped URI in per-dir context for proxy, 
ajp://localhost:9001/index.html -> ajp://localhost:9001/index.html
+ [Thu Apr 30 13:58:37.955094 2015] [rewrite:trace2] [pid 31419] 
mod_rewrite.c(468): [client XXX.XXX.XXX.XXX:38156] XXX.XXX.XXX.XXX - - 
[example.net/sid#7fc6ddd849f8][rid#7fc6ddcb30a0/subreq] [perdir 
/home/www-data/example.net/] forcing proxy-throughput with 
ajp://localhost:9001/index.html
+ [Thu Apr 30 13:58:37.955103 2015] [rewrite:trace1] [pid 31419] 
mod_rewrite.c(468): [client XXX.XXX.XXX.XXX:38156] XXX.XXX.XXX.XXX - - 
[example.net/sid#7fc6ddd849f8][rid#7fc6ddcb30a0/subreq] [perdir 
/home/www-data/example.net/] go-ahead with proxy request 
proxy:ajp://localhost:9001/index.html [OK]
+ </pre>
+ 
+ 
+ [Regression Potential]
+ 
+ As stated on the apache bugtracker
+ https://bz.apache.org/bugzilla/show_bug.cgi?id=53929#c10:
+ 
+ "The behavior now seems to be consistent with 2.2, and a rewrite rule
+ that conflicts with a DirectoryIndex gets applied."
+ 
+ [Original Description]
  Ubuntu 14.04LTS x86_64
  
  In apache 2.4.7 there is a bug in mod_dir, in that it does not stop when
  the URL has just been rewritten by mod_rewrite.
  
  If you have rewrite rules in .htaccess, ending in a [P] for an external
  URL, rule execution should stop and mod_proxy should go and fetch the
  given URL. Instead, mod_dir fires another round of rewrite rule checks
  as it looks for .../index.html, possibly giving completely different
  results (e.g. not fetching from remote site).
  
  http://www.apachelounge.com/Changelog-2.4.html:
  
-   ...
-   *) mod_dir: Don't search for a DirectoryIndex or DirectorySlash on a
-      URL that was just rewritten by mod_rewrite. PR53929. [Eric Covener]
-   ...
+   ...
+   *) mod_dir: Don't search for a DirectoryIndex or DirectorySlash on a
+      URL that was just rewritten by mod_rewrite. PR53929. [Eric Covener]
+   ...
  
  http://stackoverflow.com/questions/17095981/why-apache-mod-rewrite-
  rewrites-twice-my-url
  
- 
  Please backport the for PR53929
  (or update apache package to 2.4.9)

-- 
You received this bug notification because you are a member of Ubuntu
Server Team, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/1394403

Title:
  RewriteRule of "^$" is broken

To manage notifications about this bug go to:
https://bugs.launchpad.net/apache2/+bug/1394403/+subscriptions

-- 
Ubuntu-server-bugs mailing list
Ubuntu-server-bugs@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs

Reply via email to