Веб-розробка: конфуз через індексацію в пошукових системахsteemCreated with Sketch.

in Ukraine on Steem6 hours ago (edited)

Сьогодні мій допис буде мінімально цікавим для учасників нашої спільноти. Але оскільки Стіміт чудово індексується 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-заголовками. Вибачте, повну адресу на напишу, це було би неправильно робити на публічній платформі.

403

Під час першої перевірки прийшла відповідь сервера 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, тобто все працює ок:

200

До чого я все це пишу. Я зазнав конфузу через те, що довірився побаченому. Браузер відображав HTML як є, але пошукові боти в першу чергу перевіряють, який HTTP-статус їм повернув сервер, і вирішують, чи варто їм взагалі допускати сайт до індексації. Ця помилка коштувала мені часу, але свій урок я з цього виніс і став на 0,0001% розумнішим :))

Posted using SteemX

Sort:  

🎉 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

banner.jpg