Mod-Rewrite loading files behind the DocumentRoot
Just so you know why that rule doesn't work:
The reason that it isn't able to rewrite to /home/other_files/file.html
is that mod_rewrite is parsing the path as /home/webroot/home/other_files/file.html
since from mod_rewrite's point of view the preceding slash is equivalent to your document root of /home/webroot
.
Ryan Ahearn's suggestion is a decent one, and is likely the route you want to go.
I believe you need to add a section with
<Directory "/home/other_files">
(options)
</Directory>
to your server configuration before apache will be able to serve anything from it. For an example, my DocumentRoot is /var/www but there is this section in the default available site:
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
You could then rewrite a URL to go to /doc/ and the server would know where to get the files from.
The credit goes to Ryan Aheam, but I'm going to spell it out. I'm a beginner and even with Ryan's answer I had to experiment with a few things to get the syntax right.
I wanted my DocumentRoot
to be my cakephp
directory. But then I had a Mantis Bug tracker that was just regular PHP and so not in the cakephp
directory. The the files below I have the following working.
http://www.example.com
: served by /var/www/cakephp
http://www.example.com/mantisbt
: served by /var/www/html/mantisbt
File /etc/httpd/conf/httpd.conf
Alias /mantisbt/ "/var/www/html/mantisbt/"
<Directory "/var/www/html/">
AllowOverride All
</Directory>
<VirtualHost *:80>
ServerAdmin me@my_email.com
DocumentRoot /var/www/cakephp
ServerName my_website.com
<Directory /var/www/cakephp/>
AllowOverride All
</Directory>
</VirtualHost>
File /var/www/cakephp/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^mantisbt/?$ /mantisbt/ [NC,L]
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>