Boost configured in apache vs .htaccess

mmilano's picture

Is anyone using Boost with the rewrite conditions in an Apache conf vs. .htaccess? Boost works fine by default, but when I move the rerwite rules into apache, it does not.

I made the logical changes that I had to make from to the normal drupal rewrite by adding a slash before 'cache' on each rewrite rule.

Here's what I got.. If you have any suggestions, or could post your rewrite rules that work, I'd appreciate it.

RewriteCond %{REQUEST_METHOD} ^GET$
  RewriteCond %{REQUEST_URI} ^/$
  RewriteCond %{QUERY_STRING} ^$
  RewriteCond %{HTTP_COOKIE} !DRUPAL_UID
  RewriteCond %{DOCUMENT_ROOT}/cache/%{SERVER_NAME}/0/index.html -f
  RewriteRule ^(.)$ /cache/%{SERVER_NAME}/0/index.html [L]
  RewriteCond %{REQUEST_METHOD} ^GET$
  RewriteCond %{REQUEST_URI} !^/cache
  RewriteCond %{REQUEST_URI} !^/user/login
  RewriteCond %{REQUEST_URI} !^/admin
  RewriteCond %{QUERY_STRING} ^$
  RewriteCond %{HTTP_COOKIE} !DRUPAL_UID
  RewriteCond %{DOCUMENT_ROOT}/cache/%{SERVER_NAME}/0%{REQUEST_URI} -d
  RewriteCond %{DOCUMENT_ROOT}/cache/%{SERVER_NAME}/0%{REQUEST_URI}/index.html -f
  RewriteRule ^(.
)$ /cache/%{SERVER_NAME}/0/$1/index.html [L]
  RewriteCond %{REQUEST_METHOD} ^GET$
  RewriteCond %{REQUEST_URI} !^/cache
  RewriteCond %{REQUEST_URI} !^/user/login
  RewriteCond %{REQUEST_URI} !^/admin
  RewriteCond %{QUERY_STRING} ^$
  RewriteCond %{HTTP_COOKIE} !DRUPAL_UID
  RewriteCond %{DOCUMENT_ROOT}/cache/%{SERVER_NAME}/0%{REQUEST_URI}.html -f
  RewriteRule ^(.)$ /cache/%{SERVER_NAME}/0/$1.html [L]
  # BOOST END
 
  # Rewrite current-style URLs of the form 'index.php?q=x'.
  RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
  RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
  RewriteRule ^(.
)$ /index.php?q=$1 [L,QSA]

Login to post comments

Where in apache is this?

bhuga-gdo's picture
bhuga-gdo - Wed, 2008-09-17 06:37

Where in your httpd.conf are these snippets located?


/etc/httpd/conf/httpd.conf <V

mmilano's picture
mmilano - Wed, 2008-09-17 07:11

/etc/httpd/conf/httpd.conf

<VirtualHost :80>
    ServerAdmin webmaster@example.com
    DocumentRoot /var/www/example.com/public_html
    ServerName example.com
    ErrorLog /var/www/example.com/logs/error_log
    CustomLog /var/www/example.com/logs/access_log common
    Include conf/drupal.conf
</VirtualHost>

<Directory /var/www/
/public_html>
    Options +Includes -Indexes
    AllowOverride None
    Order allow,deny
    Allow from all
    <Files ~ "^.ht">
    Deny from all
    </Files>
</Directory>

Then the rewrite rules I noted in my original post are in: /etc/httpd/conf/drupal.conf

The actual symptom is that only the index file is getting written to cache. No other file is written to cache unless I use the .htaccess.


rewriterules in vhost

oliver soell's picture
oliver soell - Wed, 2008-09-17 18:27

in the vhost, the active internal path does not include the document root yet, so you have to specify it in the rewriterule:

RewriteRule ^(.)$ boost/%{SERVER_NAME}/0/index.html [L]
becomes
RewriteRule ^(.
)$ %{DOCUMENT_ROOT}/boost/%{SERVER_NAME}/0/index.html [L]

You will have to do this for each RewriteRule you have.

I did not bother to move drupal's regular rewrites into the vhost. Trying to keep drupal's .htaccess as little modified as possible, I just include it in the Directory context:

Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
Include /var/www/.htaccess

That way, just my boost and site-specific rewrites are in the vhost context.

cheers,
-o


Thanks Oliver, that helped a

mmilano's picture
mmilano - Wed, 2008-09-17 19:59

Thanks Oliver, that helped a ton. I've been grinding on this for the last couple days. Including from the Directory context works perfect.