我有一個站點,Ruby on Rails通過Phusion Passenger在根目錄下運行。某些Apache Alias
指令提供靜態HTML目錄。Apache DirectoryIndex指令在Ruby on Rails上無法正常工作
如果您從某個靜態目錄請求一個文件的確切URL,Apache會按照預期返回它。但是,有一些情況我沒有得到預期的行爲。考慮別名Alias /functional /path/to/functional
,其中功能目錄包含index.php和hello.jpg。
- 對https://example.com/functional/hello.jpg的請求按預期返回JPEG文件。
- 對https://example.com/functional/index.php的請求運行PHP腳本並按預期打印生成的HTML文檔。
- 對https://example.com/functional/的請求導致Rails堆棧中的404 。
- https://example.com/functional(沒有結尾的斜槓)的請求也會導致Rails堆棧中出現404錯誤。理論上講,該URL應該返回一個301重定向用戶http://example.com/functional/
如果我添加一個的index.html文件到功能目錄(除了的index.php這是已經存在)路徑#3和#4按預期返回該文件。
下面是從我的Apache配置文件中的相關部分乘客:
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>
而對於靜態目錄:
Alias /functional /path/to/functional/
Alias /phpMyAdmin /path/to/phpMyAdmin/
# ... other aliases omitted ...
<Directory /path/to/functional>
DirectoryIndex index.php
AllowOverride all
</Directory>
我試過在index.php not loading by default大部分的答案,使指數.php加載,以no爲準。我甚至不需要指定DirectoryIndex index.php
,因爲該行已經在conf.d/php.conf中。
有關如何解決這個問題的任何想法,其中Rails提供404s應該在Apache堆棧中的其他地方的URL?