From 7244de8baf71ce94f5d811d28f3b2d66d133aa43 Mon Sep 17 00:00:00 2001
From: Joshua Hesketh <josh@nitrotech.org>
Date: Thu, 17 Jul 2014 23:04:06 +1000
Subject: [PATCH] Fix the apache rules for fetching from swift

Change-Id: I8c1a39a65dc1eefc782664ea5f020150821ebce6
---
 modules/openstack_project/templates/logs-dev.vhost.erb | 10 +++++++---
 modules/openstack_project/templates/logs.vhost.erb     | 10 +++++++---
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/modules/openstack_project/templates/logs-dev.vhost.erb b/modules/openstack_project/templates/logs-dev.vhost.erb
index 0b5827b1a4..a6df51cc0d 100644
--- a/modules/openstack_project/templates/logs-dev.vhost.erb
+++ b/modules/openstack_project/templates/logs-dev.vhost.erb
@@ -59,8 +59,12 @@ NameVirtualHost <%= vhost_name %>:<%= port %>
 
   RewriteEngine On
   # rewrite all txt.gz & html.gz files to map to our internal htmlify wsgi app
-  RewriteRule ^/(.*\.txt\.gz)$ /htmlify/$1 [QSA,L,PT]
-  RewriteRule ^/(.*console\.html(\.gz)?)$ /htmlify/$1 [QSA,L,PT]
+  # PT, Pass-through: to come back around and get picked up by the WSGIScriptAlias
+  # NS, No-subrequest: on coming back through, mod-autoindex may have added index.html
+  #                    which would match the !-f condition. We therefore ensure the
+  #                    rewrite doesn't trigger by disallowing subrequests.
+  RewriteRule ^/(.*\.txt\.gz)$ /htmlify/$1 [QSA,L,PT,NS]
+  RewriteRule ^/(.*console\.html(\.gz)?)$ /htmlify/$1 [QSA,L,PT,NS]
 
   # Check if the request exists as a file, directory or symbolic link
   # If not, write the request to htmlify to see if we can fetch from swift
@@ -68,7 +72,7 @@ NameVirtualHost <%= vhost_name %>:<%= port %>
   RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
   RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-l
   RewriteCond %{REQUEST_FILENAME} !^/icon
-  RewriteRule ^/(.*)$ /htmlify/$1 [QSA,L]
+  RewriteRule ^/(.*)$ /htmlify/$1 [QSA,L,PT,NS]
 
   WSGIScriptAlias /htmlify /usr/local/lib/python2.7/dist-packages/os_loganalyze/wsgi.py
 
diff --git a/modules/openstack_project/templates/logs.vhost.erb b/modules/openstack_project/templates/logs.vhost.erb
index 0b5827b1a4..a6df51cc0d 100644
--- a/modules/openstack_project/templates/logs.vhost.erb
+++ b/modules/openstack_project/templates/logs.vhost.erb
@@ -59,8 +59,12 @@ NameVirtualHost <%= vhost_name %>:<%= port %>
 
   RewriteEngine On
   # rewrite all txt.gz & html.gz files to map to our internal htmlify wsgi app
-  RewriteRule ^/(.*\.txt\.gz)$ /htmlify/$1 [QSA,L,PT]
-  RewriteRule ^/(.*console\.html(\.gz)?)$ /htmlify/$1 [QSA,L,PT]
+  # PT, Pass-through: to come back around and get picked up by the WSGIScriptAlias
+  # NS, No-subrequest: on coming back through, mod-autoindex may have added index.html
+  #                    which would match the !-f condition. We therefore ensure the
+  #                    rewrite doesn't trigger by disallowing subrequests.
+  RewriteRule ^/(.*\.txt\.gz)$ /htmlify/$1 [QSA,L,PT,NS]
+  RewriteRule ^/(.*console\.html(\.gz)?)$ /htmlify/$1 [QSA,L,PT,NS]
 
   # Check if the request exists as a file, directory or symbolic link
   # If not, write the request to htmlify to see if we can fetch from swift
@@ -68,7 +72,7 @@ NameVirtualHost <%= vhost_name %>:<%= port %>
   RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
   RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-l
   RewriteCond %{REQUEST_FILENAME} !^/icon
-  RewriteRule ^/(.*)$ /htmlify/$1 [QSA,L]
+  RewriteRule ^/(.*)$ /htmlify/$1 [QSA,L,PT,NS]
 
   WSGIScriptAlias /htmlify /usr/local/lib/python2.7/dist-packages/os_loganalyze/wsgi.py