我有一个站点,Ruby on Rails通过Phusion Passenger在根目录下运行。一些Apache Alias
指令提供静态HTML目录。
如果您从其中一个静态目录请求文件的确切URL,Apache会按预期返回它。但是,有一些情况我没有得到预期的行为。考虑别名Alias /functional /path/to/functional
,其中功能目录包含 index.php 和 hello.jpg 。
如果我将 index.html 文件添加到功能目录中(除了已经存在的 index.php 之外),路径#3和#4按预期返回该文件。
以下是Passenger的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中的大部分答案,以使 index.php 加载,但不会占上风。我甚至不需要指定DirectoryIndex index.php
,因为该行已经在 conf.d / php.conf 中。
关于如何解决这个问题的任何想法,其中Rails在应该在Apache堆栈中的其他位置提供404的URL?
答案 0 :(得分:0)
您是否尝试过更换
<Directory /path/to/functional>
用
<Directory /functional>
答案 1 :(得分:0)
我遇到了同样的问题。工作解决方案只是虚拟主机服务乘客的RedirectMatch
语句,如下所示:
RedirectMatch ^/path/to/functional(/)?$ /path/to/functional/index.php