2015-10-25 2 views
-1

Я использую AWS-s3 для статического хостинга веб-сайтов и запускаю его через службы Cloudflare (включая DNS). Лучшей практикой SEO является усечение .html от имен URL-адресов, одновременно избегая дублирования контента. Я добился желаемого результата с помощью nginx, и мне интересно, возможно ли это с помощью s3 или Cloudflare. Моя кишка говорит мне нет.AWS-s3> URL-адрес переустановки Cloudflare

Основное требование: example.com/about.html должно переписать (не перенаправить) на example.com/about. Имя файла, сохраненное на s3, должно оставаться, очевидно, *.html.

Один хак Я наткнулся на это:

  1. Измените имя файла на сервере about (без расширения файла).
  2. Затем в консоли s3 измените метаданные content-type на text/html.

Я рассматриваю это как ужасное «решение»: Посещение *.html результатов в 404. Если, конечно, вы не создать дубликат файла с расширением .html, а затем, возможно, создать правила переадресации URL в Cloudflare. Мало того, что он очень грязный, он просто не масштабируется.

Есть ли лучший способ?

ответ

4

Моя кишка говорит мне нет.

Правильность и неверность вашей кишки.

Вы не можете иметь оба варианта с S3; подразумеваемые расширения не поддерживаются ... однако, есть способ сделать это, оставаясь (возможно) SEO-разумным.

about Вместо → about.html вы можете сделать about → → about/about/index.html.

Включить индексные документы на ковше. Если браузер запрашивает /about, и это не объект, он увидит ответ 301 Moved Permanently с Location: /about/.

Когда S3 видит запрос на /about/, он вернет содержимое /about/index.html без выдачи переадресации.


Конечно, ваш оригинальный обходной путь от изменения Content-Type в консоли можно избежать, если установить тип содержимого вручную, когда документ будет загружен в консоли. Существует много типов контента, которые консоль не устанавливает автоматически при загрузке, поэтому я привык их вручную устанавливать.

+0

Спасибо, человек. Я уже рассмотрел это решение, но уклонился из-за очевидного хакерства. Жаль, что нет «реального» способа сделать это. Итак, в основном, каждая страница получает свою собственную папку? – jamesJosephFinn

+1

По существу, да, хотя папки - что-то вроде иллюзии в S3. Файлы фактически хранятся с буквальными косыми чертами в их именах, а консоль генерирует презентацию папки.Если вы создаете файлы с помощью API, вы можете просто поместить косые черты в свои имена и фактически не создавать папки, хотя они все равно появятся в консоли. –

+1

Конечно, вы можете проксировать через nginx на S3 :), хотя это может победить по любой причине, которую вы могли бы устранить, в первую очередь. Я часто запускаю HAProxy перед ведрами по разным причинам, но в этой среде было бы возможно добавить «.html» в путь запроса, если шаблон соответствует, например, «/[^\.]+$» (путь без '.' между последней косой чертой и концом строки). –