I have a site where Ruby on Rails is running at the root directory via Phusion Passenger. Some Apache Alias
directives serve static HTML directories.
If you request an exact URL of a file from one of the static directories, Apache returns it as expected. However, there are a few cases where I'm not getting the expected behavior. Consider the alias Alias /functional /path/to/functional
, where the functional directory contains index.php and hello.jpg.
- A request for https://example.com/functional/hello.jpg returns the JPEG file as expected.
- A request for https://example.com/functional/index.php runs the PHP script and prints the resulting HTML document as expected.
- A request for https://example.com/functional/ results in a 404 in the Rails stack.
- A request for https://example.com/functional (without the trailing slash) also results in a 404 in the Rails stack. Ideally this URL should return a 301 redirecting the user to http://example.com/functional/
If I add an index.html file into the functional directory (in addition to the index.php that is already there), paths #3 and #4 return that file as expected.
Here's the relevant parts from my Apache configuration file for Passenger:
LoadModule passenger_module /path/to/mod_passenger.so
LoadModule ssl_module modules/mod_ssl.so
<IfModule mod_passenger.c>
# ... passenger setup stuff omitted ...
Listen 443
<VirtualHost *:443>
ServerName ...
DocumentRoot /path/to/rails/public
PassengerRuby /path/to/ruby
<Directory /path/to/rails/public>
Allow from all
Options -MultiViews
</Directory>
# ... ssl setup omitted ...
</VirtualHost>
</IfModule>
And for the static directories:
Alias /functional /path/to/functional/
Alias /phpMyAdmin /path/to/phpMyAdmin/
# ... other aliases omitted ...
<Directory /path/to/functional>
DirectoryIndex index.php
AllowOverride all
</Directory>
I've tried most of the answers in index.php not loading by default to make index.php load, to no prevail. I shouldn't even need to specify DirectoryIndex index.php
since that line is already in conf.d/php.conf.
Any ideas on how to solve this issue where Rails is giving 404s on URLs which are supposed to be going elsewhere in the Apache stack?