URL-адреса каталогов Apache/Rails/Passenger, которые не заканчиваются на «/», не соответствуют 404

Я использую Apache с пассажиром для запуска приложения rails. В моем приложении rails у меня есть статический контент в подкаталогах общедоступного каталога. В каждом подкаталоге есть index.html.

Итак, внутри общедоступного каталога у меня есть подкаталог с именем «b», а внутри него находится index.html. Вот так:

/public/b/index.html

У меня есть ссылки на эти страницы в виде:

http://a.com/b

Если я сделаю это в своем обычном веб-каталоге, отличном от Rails, Apache правильно заменит этот URL-адрес на http://a.com/b/ который затем показывает index.html. Только при доступе к моему приложению rails оно не работает. На самом деле, если я отключу пассажирский мод... чтобы он просто обращался к моему приложению rails, как к обычному корневому каталогу документов, он также работал правильно.

Что, черт возьми, мне нужно сделать, чтобы это правильно работало с пассажиром? Опять же, он отлично работает в самом apache, когда пассажир не участвует.

У меня пассажир 2.1.3. У меня есть еще один сервер с пассажиром 2.0, на котором, похоже, нет этой проблемы, но я не вижу ничего другого в конфигурации, кроме разных версий самого пассажира.

ПОМОЩЬ! Работал над этим в течение двух дней без каких-либо улучшений!


person Community    schedule 12.04.2009    source источник


Ответы (2)


У вас включен PassengerHighPerformance? Это может помешать индексным страницам.

person MarkusQ    schedule 12.04.2009
comment
Нет, не знаю. Я перепрошил своего пассажира с 2.1.3 на 2.0.6 и проблема ушла. Я думаю, что это что-то сломано в 2.1.3. - person ; 12.04.2009

Добавьте следующее правило перезаписи в конфигурацию apache:

# Turn on URL rewriting
RewriteEngine On
# For a given url foo, check if foo/index.html exists as a static file
RewriteRule ^([^.]+)$ $1/index.html [QSA]
person ktheory    schedule 13.05.2009