Я хотел бы добавить косую черту в конце, когда она отсутствует в URL-адресе запроса:
когда пользователь запрашивает
https://example.com/blog
, он должен быть перенаправлен наhttps://example.com/blog/
когда пользователь запрашивает
https://example.com/abc.jpg
, его следует подавать как есть
Когда сервер Apache
, кажется, обычно это делается mod_rewrite
. К сожалению, наша система включает CDN
(AWS CloudFront
), что вызывает проблемы при использовании mod_rewite
: запрос будет перенаправлен на исходный сервер, а URL-адрес в браузере изменится на URL-адрес исходного сервера.
Я тоже пробовал mod_alias
с RedirectMatch
. Но кажется, что регулярным выражениям слишком сложно выполнять сложные шаблоны соответствия (на самом деле, для этого требуется регулярное выражение, а не шаблон соответствия).
Итак, как вообще добавить завершающую косую черту для Apache
+ CDN
архитектура?
Редактировать:
Благодаря Майклу оказалось, что добавление заголовка Host в белый список в CloudFront решает мою проблему: перенаправленный URL-адрес остается таким же, как старый (с косой чертой).
Этот ответ не решает проблему, обратитесь к заголовку. Однако, поскольку ключевая проблема заключается в том, как перенаправить на правильный URL-адрес, я принимаю следующий ответ. Приписывается Майклу
Причина перенаправления на исходный URL-адрес связана с пересылкой заголовка CloudFront. Если мы внесем в белый список Host
заголовок, он будет перенаправлен на тот же домен, что и запрос пользователя.