Hi all,
I’m experiencing some google groups strangeness (namely my post from yesterday being sent to /dev/blackhole - so apologies if this does show up twice.
I’m trying to use mod_rewrite to mask the location of my rails
directory. My virtual host set up is as follows:
/httpdocs (docroot) /rails (railsroot)
so browsing to mydomain.com/rails/controller/action actually goes to the railsroot directory above . This all works beautifully (using Apache 2 / mod_fcgid btw - which is absolutely excellent!)
What I want is for people to be able to hit
mydomain.com/controller/action. One obvious way of achieving this is with mod_alias, but as my site is managed with Plesk, making vhost
level conf changes is a bit tricky (and a real maintenance hassle) so I’d prefer to accomplish this with a .htaccess level mod_rewrite rule.
What I’ve currently got is an htaccess file in httpdocs:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/rails/ RewriteRule ^(.*)$ /rails/$1 [L]
Which is fairly straightforward. The crazy thing is that although this successfully redirects “/” to the shortcut rails route, every other URL
also gets directed there (eg: /news, /contact all end up at / in the rails app.) Full controller/action/param calls get a 404.
I’ve tried a couple of variations on this rule:
RewriteRule ^(.*)$ /rails/public/$1 [L]
RewriteRule ^(.*)$ /rails%{REQUEST_URI} [L]
Both of which exhibit the same behaviour.
The following rule results in a 404: RewriteRule ^/(.*)$ /rails/$1 [L]
(note the addition of the / to the match)
Obvioulsy if I specificy a 30x redirect with [R] it works. I’ve checked the rails log, and the correct url is being called.
In an act of voodooish desperation I even tried using the RewriteBase directive in the rails/public/.htacess.
Can anyone think of anything obvious (or even slightly less obvious) that I’m doing wrong?
Thanks!
Corin