Веб-розробка: конфуз через індексацію в пошукових системах
Сьогодні мій допис буде мінімально цікавим для учасників нашої спільноти. Але оскільки Стіміт чудово індексується Google та іншими пошуковими системами, моя писанина знайде своїх читачів.
Нещодавно я займався одним проєктом для керування контентом. Усі тестування пройшли, сайт був завантажений у мережу і вже працював. Як і належить, будь-який новий вебсайт потрібно додати до Google для індексації через панель вебмайстра. Якщо раптом ви не знали, Google дуже повільно береться за нові сайти. У моєму випадку минуло близько двох місяців, перш ніж почали індексуватися перші сторінки. І щойно вони з’явилися в пошуку, одразу ж почали надходити повідомлення про проблеми. Google одразу заплутався з канонічними сторінками під час пагінації, тобто під час поділу основної стрічки публікацій на сторінки (канонічна сторінка це та версія, яку Google вважає головною, якщо один і той самий матеріал доступний за різними адресами URL). З цим у мене взагалі хронічний кретинізм – щоразу доводиться щось переробляти ще з проєктів 2017 року, ніколи в мене не виходило довести це налаштування до ідеалу, але цього разу мені допоміг chatgpt. Але суть не в цьому.
У якийсь момент на пошту прийшло нове повідомлення про помилку. Коли я зайшов у панель вебмайстра, з’ясувалося, що пошуковий бот не може відкрити головну сторінку сайту й отримує відповідь сервера 403, тобто доступ до сторінки заборонено. Така пред’ява на мить увела мене в ступор, хоча я не з тих, хто надовго зависає в ступорі. Я одразу відкрив сайт – усе працює. Перевірив у різних браузерах – працює. Відкрив у режимі інкогніто, потім через VPN – теж працює. Тож що взагалі не так? У коді PHP мені ловити було нічого, бо логіка була вибудувана рівно, і сайт справді працював, тому я вирішив звернутися до ChatGPT. Мій невтомний помічник почав шукати проблеми там, де їх не було. Коли він уже встиг мене добряче втомити, я надіслав йому вміст файлу .htaccess як підказку. І ця підказка справді допомогла штучному інтелектові знайти рішення до моєї проблеми.
Одразу ж він запропонував мені виконати команду через командний рядок у Windows: поєднання клавіш Win+R відкриває діалогове вікно, команда cmd запускає програму cmd.exe, тобто командне вікно:
curl -I https://my_website_domain_name/
Ця команда надсилає HTTP-запит типу HEAD на вказаний URL, а сервер відповідає HTTP-заголовками. Вибачте, повну адресу на напишу, це було би неправильно робити на публічній платформі.
Під час першої перевірки прийшла відповідь сервера HTTP/1.1 403 Forbidden. Проблема була в тому, що сервер Apache вважав кореневий каталог "/" каталогом без індексного файлу при ввімкненому Options -Indexes у .htaccess. Тобто сервер не знав, який файл відкривати як головну сторінку. Річ у тім, що головний файл у мене називався не index.php, а index_file_84388572.php, і я не повідомив Apache, що саме це і є index. Я принципово не вказую файл index.php як головний з міркувань безпеки. Я взагалі ніколи не використовую стандартні імена на кшталт index, default, main та їм подібні.
Налаштування .htaccess ніколи не було моєю сильною стороною, тому щоразу після додавання стандартних і знайомих мені конфігураційних директив подальша робота з ним перетворювалася для мене на витягування лотерейного квитка.
Мій файл .htaccess виглядав так:
<Files *>
order allow,deny
allow from all
</Files>
<Files .htaccess>
order allow,deny
deny from all
</Files>
Options -Indexes
Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://my_website_domain_name/$1 [R=301,L]
RewriteRule ^sitemap.xml? sitemap.php [QSA,L]
RewriteRule ^article/([0-9]+)/(.*)/? ?article=$1&url=$2 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index_file_84388572.php [L]
А проблема вирішилася після додавання в самий перший рядок DirectoryIndex index_file_84388572.php – це директива Apache, яка задає індексний файл каталогу. Я одразу запустив тест і отримав від сервера відповідь з кодом 200, тобто все працює ок:
До чого я все це пишу. Я зазнав конфузу через те, що довірився побаченому. Браузер відображав HTML як є, але пошукові боти в першу чергу перевіряють, який HTTP-статус їм повернув сервер, і вирішують, чи варто їм взагалі допускати сайт до індексації. Ця помилка коштувала мені часу, але свій урок я з цього виніс і став на 0,0001% розумнішим :))


🎉 Congratulations!
Your post has been upvoted by the SteemX Team! 🚀
SteemX is a modern, user-friendly and powerful platform built for the Steem community.
🔗 Visit us: www.steemx.org
✅ Support our work — Vote for our witness: bountyking5