Этот вопрос на самом деле больше, чем кажется на первый взгляд. Следуя совету в « Как мне сделать конечный sla sh необязательным? », проблема решается, но:
- требуется изменить все существующие маршруты, и
- это создает проблему «дублированного контента», когда идентичный контент подается с нескольких URL.
Обе эти проблемы решаемы, но я считаю, что более чистое решение - создать перенаправление для всех не root URL, которые заканчиваются на /
. Это легко сделать, добавив Sinatra's before
filter в существующий контроллер приложения:
before '/*/' do
redirect request.path_info.chomp('/')
end
get '/tickets' do
…
end
После этого существующий маршрут /tickets
будет работать так же, как и раньше, но теперь все запросы к /tickets/
будут перенаправлены на /tickets
перед обработкой в обычном режиме.
Таким образом, приложение будет отвечать как на конечных точках /ticket
, так и /tickets/
без необходимости изменять какие-либо из существующие маршруты.
PS: Перенаправление URL root (например: http://localhost:9393/
→ http://localhost:9393
) создаст бесконечное l oop, так что вы определенно не хотите сделать это.