У меня есть сайт, размещенный на Amazon S3. Это новая версия старого сайта, размещенного на WordPress.
Я настроил некоторые файлы с метаданными Website Redirect Location
для обработки старого местоположения и перенаправления их на новые страницы веб-сайта.
Например: у меня было http://www.mysite.com/solution
то, что я хочу перенаправить, http://mysite.s3-website-us-east-1.amazonaws.com/product.html
поэтому я создал пустой файл с именем solution
внутри моего ведра с правильными метаданными:
Website Redirect Location
знак равно /product.html
Метаданные перенаправления S3 эквивалентны тому, 301 Moved Permanently
что отлично подходит для SEO. Это прекрасно работает при доступе к URL напрямую из домена S3.
Я также установил дистрибутив CloudFront на основе корзины сайта. И когда я пытаюсь получить доступ через мой дистрибутив, перенаправление не работает, то есть:
http://xxxx123.cloudfront.net/solution
не перенаправляет, а загружает пустой файл.
Итак, мой вопрос, как сохранить перенаправление через дистрибутив CloudFront? Или любая идея о том, как справиться с перенаправлением без ухудшения SEO?
Благодарность
источник
Анализ
Согласно документированному поведению запросов и ответов и поддерживаемым кодам состояния HTTP для пользовательских источников , Amazon CloudFront , к сожалению, не выполняет перенаправления :
Конечно, вы используете Amazon S3, а не пользовательский источник, и соответствующий раздел заметно отсутствует в разделе « Поведение запросов и ответов для источников Amazon S3» , но, учитывая, что перенаправления Amazon S3 были добавлены сравнительно недавно (см. Amazon S3 - Поддержка веб-сайта). Перенаправляет ), это может просто отсутствовать там все еще.
Соответственно, я рискну предположить, что вы не получаете пустой файл с HTTP-кодом состояния 200 OK , а скорее HTTP-статусом 301 Постоянно перемещено без тела вообще - вы действительно проверяли это с помощью браузера или в конечном итоге только с помощью инструмента командной строки, такого как например cURL или HTTPie ? Последние инструменты обычно требуют явного параметра, чтобы следовать перенаправлениям, так что это может легко остаться незамеченным.
Потенциальное решение
Если анализ окажется верным, вам нужно настроить перенаправление, чтобы вместо этого явно указать целевой CloudFront, снова см. Перенаправления :
источник
HTTP/1.0 200 OK
Content-Type: application/octet-stream
Content-Length: 0
понимаю, перенаправление управляется S3, и в этом случае файл размещается в CloudFront, и ему не нужны заголовки перенаправления, установленные для S3 As S3 это веб-сервер файла, я не могу сопоставить перенаправление, кроме как с метаданными.