← Cloudflare Workers / workers / static-assets / routing / advanced
Обработка HTML
Принудительное добавление или удаление слеша в конце путей запроса (например, example.com/page/ и example.com/page) часто хочется контролировать по эстетическим причинам. Кроме того, это может влиять на SEO, поскольку поисковые системы часто считают URL с завершающей косой чертой и без неё разными, отдельными страницами. Это может приводить к проблемам с дублированным контентом, сложностям с индексацией и общей путанице в вопросе, какая версия страницы является канонической.
assets.html_handling конфигурация определяет перенаправления и переписывание запросов для HTML-контента. Он задает шаблон канонических URL: откуда Cloudflare обслуживает HTML-контент и куда перенаправляет неканонические URL.
Рассмотрим следующую структуру каталогов:
- dist
- file.html
- папка
- index.html
Автоматические завершающие слэши (по умолчанию)
Обычно это автоматически дает нужное поведение: отдельные файлы (например, foo.html) будет отдан без конечный слеш и файлы индекса папки (например, foo/index.html) будет отдан с конечный слеш.
{
"name": "my-worker",
// Set this to today's date
"compatibility_date": "2026-08-28",
"assets": {
"directory": "./dist/",
"html_handling": "auto-trailing-slash"
}
}name = "my-worker"
# Set this to today's date
compatibility_date = "2026-08-28"
[assets]
directory = "./dist/"
html_handling = "auto-trailing-slash"В зависимости от входящих запросов будут обслуживаться следующие ресурсы:
| Входящий запрос | Ответ | Ресурс обслужен |
|---|---|---|
| /file | 200 | /dist/file.html |
| /file.html | 307 на /file | - |
| /file/ | 307 на /file | - |
| /file/index | 307 на /file | - |
| /file/index.html | 307 на /file | - |
| /folder | 307 на /folder/ | - |
| /folder.html | 307 на /folder | - |
| /folder/ | 200 | /dist/folder/index.html |
| /folder/index | 307 на /folder | - |
| /folder/index.html | 307 на /folder | - |
Принудительно добавлять слеш в конце
Также вы можете принудительно добавлять завершающий слэш (force-trailing-slash).
{
"name": "my-worker",
// Set this to today's date
"compatibility_date": "2026-08-28",
"assets": {
"directory": "./dist/",
"html_handling": "force-trailing-slash"
}
}name = "my-worker"
# Set this to today's date
compatibility_date = "2026-08-28"
[assets]
directory = "./dist/"
html_handling = "force-trailing-slash"В зависимости от входящих запросов будут обслуживаться следующие ресурсы:
| Входящий запрос | Ответ | Ресурс обслужен |
|---|---|---|
| /file | 307 на /file/ | - |
| /file.html | 307 на /file/ | - |
| /file/ | 200 | /dist/file.html |
| /file/index | 307 на /file/ | - |
| /file/index.html | 307 на /file/ | - |
| /folder | 307 на /folder/ | - |
| /folder.html | 307 на /folder/ | - |
| /folder/ | 200 | /dist/folder/index.html |
| /folder/index | 307 на /folder/ | - |
| /folder/index.html | 307 на /folder/ | - |
Удалять конечные слэши
Или можно убрать завершающие слеши (drop-trailing-slash).
{
"name": "my-worker",
// Set this to today's date
"compatibility_date": "2026-08-28",
"assets": {
"directory": "./dist/",
"html_handling": "drop-trailing-slash"
}
}name = "my-worker"
# Set this to today's date
compatibility_date = "2026-08-28"
[assets]
directory = "./dist/"
html_handling = "drop-trailing-slash"В зависимости от входящих запросов будут обслуживаться следующие ресурсы:
| Входящий запрос | Ответ | Ресурс обслужен |
|---|---|---|
| /file | 200 | /dist/file.html |
| /file.html | 307 на /file | - |
| /file/ | 307 на /file | - |
| /file/index | 307 на /file | - |
| /file/index.html | 307 на /file | - |
| /folder | 200 | /dist/folder/index.html |
| /folder.html | 307 на /folder | - |
| /folder/ | 307 на /folder | - |
| /folder/index | 307 на /folder | - |
| /folder/index.html | 307 на /folder | - |
Отключить обработку HTML
Если у вас особые требования, встроенную обработку HTML можно отключить полностью (none).
{
"name": "my-worker",
// Set this to today's date
"compatibility_date": "2026-08-28",
"assets": {
"directory": "./dist/",
"html_handling": "none"
}
}name = "my-worker"
# Set this to today's date
compatibility_date = "2026-08-28"
[assets]
directory = "./dist/"
html_handling = "none"В зависимости от входящих запросов будут обслуживаться следующие ресурсы:
| Входящий запрос | Ответ | Ресурс обслужен |
|---|---|---|
| /file | Зависит от not_found_handling |
Зависит от not_found_handling |
| /file.html | 200 | /dist/file.html |
| /file/ | Зависит от not_found_handling |
Зависит от not_found_handling |
| /file/index | Зависит от not_found_handling |
Зависит от not_found_handling |
| /file/index.html | Зависит от not_found_handling |
Зависит от not_found_handling |
| /folder | Зависит от not_found_handling |
Зависит от not_found_handling |
| /folder.html | Зависит от not_found_handling |
Зависит от not_found_handling |
| /folder/ | Зависит от not_found_handling |
Зависит от not_found_handling |
| /folder/index | Зависит от not_found_handling |
Зависит от not_found_handling |
| /folder/index.html | 200 | /dist/folder/index.html |