📘 Чому важлива URL структура?
URL (Uniform Resource Locator) — це адреса вашої веб-сторінки. Правильно структуровані URLs:
- 📈 Покращують SEO — Google використовує URL як ranking factor
- 🔗 Збільшують CTR — зрозумілі URLs отримують більше кліків
- 👥 UX friendly — користувачі бачать, що на сторінці
- 📊 Аналітика — легше відстежувати у Google Analytics
- 🔗 Shareability — зручніше шерити в соцмережах
Частина 1: Порівняння поганих і хороших URLs
| ❌ Погано |
✅ Добре |
example.com/page.php?id=123 |
example.com/quadratic-equation-calculator |
example.com/категорія/калькулятор |
example.com/category/calculator |
example.com/product.asp?cat=4&id=2343 |
example.com/math/derivative-calculator |
example.com/index.php?page=about_us |
example.com/about |
example.com/2026/02/07/post-title-here |
example.com/blog/post-title-here |
example.com/PRODUCTS/CATEGORY/ITEM |
example.com/products/category/item |
Частина 2: Правила SEO-friendly URLs
1
Використовуйте дефіси (-), не підкреслення (_)
❌ example.com/quadratic_equation_calculator
✅ example.com/quadratic-equation-calculator
Чому? Google розглядає дефіс як розділювач слів, а підкреслення — як частину слова.
quadratic-equation = два слова "quadratic" + "equation"
quadratic_equation = одне слово "quadraticequation"
2
Lowercase (малі літери)
❌ example.com/Quadratic-Equation-Calculator
❌ example.com/PRODUCTS/Category/Item
✅ example.com/quadratic-equation-calculator
Проблема: деякі сервери розрізняють регістр:
/About ≠ /about
- Це призводить до дублікатів контенту!
- Користувачі можуть ввести URL неправильно
3
Коротко і змістовно (3-5 слів)
❌ example.com/how-to-use-our-online-quadratic-equation-calculator-tool-for-students
✅ example.com/quadratic-equation-calculator
Оптимальна довжина: 50-60 символів максимум
- Google показує ~60 символів у результатах пошуку
- Короткі URLs легше запам'ятати
- Менше шансів на помилку при введенні
4
Використовуйте ключові слова
❌ example.com/calculator/tool-42
✅ example.com/quadratic-equation-calculator
Правила:
- Головне ключове слово на початку URL
- 1-2 ключові слова максимум
- Уникайте keyword stuffing
5
Чітка ієрархія (breadcrumb structure)
✅ example.com/math/algebra/quadratic-equation
✅ example.com/physics/mechanics/kinematics
✅ example.com/blog/seo/url-optimization
Переваги:
- Зрозуміла структура сайту
- Легше навігувати (можна підняти на рівень: /math/algebra → /math)
- Google краще розуміє зв'язки між сторінками
Обмеження: максимум 3-4 рівні вкладеності
❌ example.com/category/subcategory/sub-subcategory/item/detail
6
Без спецсимволів та кирилиці
❌ example.com/калькулятор-квадратного-рівняння
❌ example.com/calculator?param=значення
❌ example.com/calc@2026#section
✅ example.com/quadratic-equation-calculator
✅ example.com/calculator?param=value
✅ example.com/calc-2026
Проблема кирилиці: перетворюється на percent-encoding
Кирилиця: /калькулятор
Кодування: /%D0%BA%D0%B0%D0%BB%D1%8C%D0%BA%D1%83%D0%BB%D1%8F%D1%82%D0%BE%D1%80
Результат: довгий, незрозумілий, погано для SEO
Дозволені символи:
- Літери:
a-z
- Цифри:
0-9
- Дефіс:
-
- Слеш:
/
Частина 3: Slug Generation (транслітерація)
JavaScript функція для створення slug
function generateSlug(text) {
// Транслітерація кирилиці
const cyrillicMap = {
'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd', 'е': 'e', 'є': 'ye',
'ж': 'zh', 'з': 'z', 'и': 'y', 'і': 'i', 'ї': 'yi', 'й': 'y', 'к': 'k',
'л': 'l', 'м': 'm', 'н': 'n', 'о': 'o', 'п': 'p', 'р': 'r', 'с': 's',
'т': 't', 'у': 'u', 'ф': 'f', 'х': 'kh', 'ц': 'ts', 'ч': 'ch', 'ш': 'sh',
'щ': 'shch', 'ь': '', 'ю': 'yu', 'я': 'ya'
};
return text
.toLowerCase() // Lowercase
.trim() // Видалити пробіли з початку/кінця
.split('')
.map(char => cyrillicMap[char] || char) // Транслітерація
.join('')
.replace(/[^a-z0-9\s-]/g, '') // Видалити спецсимволи
.replace(/\s+/g, '-') // Пробіли → дефіси
.replace(/-+/g, '-') // Множинні дефіси → один
.replace(/^-|-$/g, ''); // Видалити дефіси з початку/кінця
}
// Приклади
console.log(generateSlug('Калькулятор квадратного рівняння'));
// → "kalkulyator-kvadratnogo-rivnyannya"
console.log(generateSlug('Квантова механіка: хвильова функція'));
// → "kvantova-mekhanika-khvylyova-funktsiya"
console.log(generateSlug(' Multiple Spaces '));
// → "multiple-spaces"
console.log(generateSlug('Special!@#$%Characters'));
// → "specialcharacters"
PHP функція
function generateSlug($text) {
// Транслітерація
$transliteration = [
'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd',
'е' => 'e', 'є' => 'ye', 'ж' => 'zh', 'з' => 'z', 'и' => 'y',
'і' => 'i', 'ї' => 'yi', 'й' => 'y', 'к' => 'k', 'л' => 'l',
'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r',
'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'kh',
'ц' => 'ts', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'shch',
'ь' => '', 'ю' => 'yu', 'я' => 'ya'
];
$text = mb_strtolower($text, 'UTF-8');
$text = strtr($text, $transliteration);
$text = preg_replace('/[^a-z0-9\s-]/', '', $text);
$text = preg_replace('/\s+/', '-', trim($text));
$text = preg_replace('/-+/', '-', $text);
$text = trim($text, '-');
return $text;
}
echo generateSlug('Калькулятор матриць');
// → "kalkulyator-matryts"
Python функція
import re
from transliterate import translit
def generate_slug(text):
# Транслітерація (потрібна бібліотека: pip install transliterate)
text = translit(text, 'uk', reversed=True)
text = text.lower()
text = re.sub(r'[^a-z0-9\s-]', '', text)
text = re.sub(r'\s+', '-', text.strip())
text = re.sub(r'-+', '-', text)
text = text.strip('-')
return text
print(generate_slug('Квантова фізика'))
# → "kvantova-fizyka"
Частина 4: URL Rewriting (.htaccess / Nginx)
Apache (.htaccess)
# Увімкнути mod_rewrite
RewriteEngine On
RewriteBase /
# Видалити trailing slash (опціонально)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [R=301,L]
# Примусово lowercase URLs
RewriteMap lowercase int:tolower
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule ^(.*)$ ${lowercase:$1} [R=301,L]
# Чисті URLs (видалити .html)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.html [NC,L]
# Redirect старих URLs на нові
RewriteRule ^old-page$ /new-page [R=301,L]
RewriteRule ^product\.php\?id=(\d+)$ /products/$1 [R=301,L]
Nginx
server {
listen 80;
server_name example.com;
# Видалити trailing slash
rewrite ^/(.*)/$ /$1 permanent;
# Примусово lowercase
if ($request_uri ~* [A-Z]) {
rewrite ^(.*)$ $scheme://$host$uri permanent;
}
# Чисті URLs
location / {
try_files $uri $uri.html $uri/ =404;
}
# Redirect старих URLs
rewrite ^/old-page$ /new-page permanent;
rewrite ^/product\.php\?id=(\d+)$ /products/$1 permanent;
}
Частина 5: Обробка параметрів URL
Query Parameters (GET параметри)
⚠️ Використовуйте обережно!
Query parameters погано для SEO, якщо створюють дублікати контенту:
❌ example.com/products?sort=price&order=desc
❌ example.com/products?page=2
❌ example.com/products?utm_source=facebook
✅ Коли використовувати query parameters:
- Фільтри:
/products?color=red&size=M
- Пошук:
/search?q=calculator
- Tracking:
?utm_source=google&utm_medium=cpc
- Pagination:
/blog?page=2 (але краще /blog/page/2)
📌 Налаштуйте Google Search Console:
Додайте параметри, які не мають індексуватись: Settings → URL Parameters → Add parameter
utm_* → No URLs
sort → Representative URL (canonical)
page → Paginated
Canonical tags для параметрів
<!-- Сторінка з фільтром -->
<!-- URL: /products?color=red&size=M -->
<link rel="canonical" href="https://example.com/products" />
<!-- Сторінка пагінації -->
<!-- URL: /blog?page=2 -->
<link rel="canonical" href="https://example.com/blog" />
<!-- АБО -->
<link rel="canonical" href="https://example.com/blog/page/2" />
Частина 6: URL Structure для різних типів сайтів
E-commerce (інтернет-магазин)
# Категорії
/products/{category}
/products/electronics
/products/electronics/smartphones
# Товари
/products/{category}/{product-name}
/products/electronics/iphone-15-pro
# Фільтри (query params)
/products/electronics?price=500-1000&brand=apple
# Кошик та checkout
/cart
/checkout
/checkout/shipping
/checkout/payment
Блог
# Варіант 1: Без дати (рекомендовано)
/blog/{post-title}
/blog/how-to-optimize-urls
# Варіант 2: З категорією
/blog/{category}/{post-title}
/blog/seo/how-to-optimize-urls
# Варіант 3: З датою (НЕ рекомендовано)
/blog/{year}/{month}/{day}/{post-title}
/blog/2026/02/07/how-to-optimize-urls
# Проблема: URL стає застарілим
Documentation/Guides
/guides/{topic}
/guides/url-optimization
/guides/hreflang-implementation
/api/documentation
/api/v1/reference
/api/v2/reference
Частина 7: Міграція URLs (301 Redirects)
⚠️ Важливо! При зміні URL структури завжди налаштовуйте 301 redirects!
- Зберігає SEO rankings (передає ~90-99% link juice)
- Запобігає 404 помилкам
- Покращує UX (користувачі не потрапляють на порожні сторінки)
Масовий redirect (.htaccess)
# Redirect всіх старих URLs на нові
RewriteEngine On
# Міграція зі старої структури на нову
RewriteRule ^old/(.*)$ /new/$1 [R=301,L]
# Видалення дати з blog URLs
RewriteRule ^blog/\d{4}/\d{2}/\d{2}/(.*)$ /blog/$1 [R=301,L]
# Redirect з .html на clean URLs
RewriteRule ^(.*)\.html$ /$1 [R=301,L]
# Redirect з кирилиці на транслітерацію
RewriteRule ^калькулятор$ /calculator [R=301,L]
CSV mapping для складних міграцій
# redirects.csv
old_url,new_url,status
/old-page-1,/new-page-1,301
/old-page-2,/new-page-2,301
/blog/2025/01/15/title,/blog/title,301
# Python скрипт для генерації .htaccess
import csv
with open('redirects.csv', 'r') as f:
reader = csv.DictReader(f)
with open('.htaccess', 'a') as htaccess:
htaccess.write('RewriteEngine On\n\n')
for row in reader:
old = row['old_url']
new = row['new_url']
status = row['status']
htaccess.write(f'RewriteRule ^{old.lstrip("/")}$ {new} [R={status},L]\n')
Частина 8: Best Practices Checklist
✅ Чек-лист для кожного URL:
- □ Lowercase (малі літери)
- □ Дефіси (-), не підкреслення (_)
- □ Коротко (50-60 символів)
- □ Містить ключові слова
- □ Без спецсимволів та кирилиці
- □ Чітка ієрархія (breadcrumb)
- □ Без trailing slash (або консистентно)
- □ HTTPS (не HTTP)
- □ Canonical tag (якщо потрібно)
- □ 301 redirect зі старих URLs
Trailing Slash: / чи ні?
📌 Виберіть один варіант і дотримуйтесь його!
З trailing slash: /products/
Без trailing slash: /products
Google розглядає їх як різні URLs!
/products і /products/ — різні сторінки
- Це призводить до дублікатів контенту
Рішення:
- Оберіть один варіант
- Налаштуйте 301 redirect з іншого варіанту
- Додайте canonical tag
Висновок
Оптимізація URL структури — фундаментальна частина SEO:
- ✅ Короткі та зрозумілі URLs → краще UX та SEO
- ✅ Ключові слова в URL → Google ranking factor
- ✅ Транслітерація кирилиці → SEO-friendly URLs
- ✅ Правильні redirects → збереження rankings при міграції
- ✅ Consistency → однакова структура по всьому сайту
🚀 Рекомендована структура:
# Ваш сайт:
example.com/math/quadratic-equation-calculator
example.com/physics/kinematics-calculator
example.com/blog/url-optimization-guide
# Правила:
✅ Lowercase
✅ Дефіси (-)
✅ Ключові слова
✅ Ієрархія (максимум 3-4 рівні)
✅ Без спецсимволів
✅ 50-60 символів