Я использую AWS-s3 для статического хостинга веб-сайтов и запускаю его через службы Cloudflare (включая DNS). Лучшей практикой SEO является усечение .html
от имен URL-адресов, одновременно избегая дублирования контента. Я добился желаемого результата с помощью nginx, и мне интересно, возможно ли это с помощью s3 или Cloudflare. Моя кишка говорит мне нет.AWS-s3> URL-адрес переустановки Cloudflare
Основное требование: example.com/about.html
должно переписать (не перенаправить) на example.com/about
. Имя файла, сохраненное на s3, должно оставаться, очевидно, *.html
.
Один хак Я наткнулся на это:
- Измените имя файла на сервере
about
(без расширения файла). - Затем в консоли s3 измените метаданные
content-type
наtext/html
.
Я рассматриваю это как ужасное «решение»: Посещение *.html
результатов в 404. Если, конечно, вы не создать дубликат файла с расширением .html
, а затем, возможно, создать правила переадресации URL в Cloudflare. Мало того, что он очень грязный, он просто не масштабируется.
Есть ли лучший способ?
Спасибо, человек. Я уже рассмотрел это решение, но уклонился из-за очевидного хакерства. Жаль, что нет «реального» способа сделать это. Итак, в основном, каждая страница получает свою собственную папку? – jamesJosephFinn
По существу, да, хотя папки - что-то вроде иллюзии в S3. Файлы фактически хранятся с буквальными косыми чертами в их именах, а консоль генерирует презентацию папки.Если вы создаете файлы с помощью API, вы можете просто поместить косые черты в свои имена и фактически не создавать папки, хотя они все равно появятся в консоли. –
Конечно, вы можете проксировать через nginx на S3 :), хотя это может победить по любой причине, которую вы могли бы устранить, в первую очередь. Я часто запускаю HAProxy перед ведрами по разным причинам, но в этой среде было бы возможно добавить «.html» в путь запроса, если шаблон соответствует, например, «/[^\.]+$» (путь без '.' между последней косой чертой и концом строки). –