Перейти к содержанию
Rossia3D

Удаление url по префиксу

Несколько сотен старых страниц вашего сайта остались в индексе поиска Google и Яндекс. Удаление каждой отдельно через инструмент поиска — это чрезмерная работа. Удаление URL по префиксу решает проблему: вы исключаете целую группу страниц из поиска одной операцией вместо ручной обработки множества адресов. Например, раздел «/archive/» с 50 страницами удаляется по одному префиксу через файл robots.txt, директиву в Google Search Console или другие методы. Это экономит часы при удалении старых страниц сайта и исключает ошибки. В статье разберём все основные способы удаления страниц по префиксу с примерами для каждого подхода.

Удаление URL по префиксу в коде

Удаление url по префиксу — Нейтральный редакционный кадр статьи, подходящий анонсу и полному материалу
Удаление сотен страниц по одному префиксу вместо ручной обработки каждого URL экономит время и исключает ошибки при очистке индекса

Удаление URL по префиксу в коде и системе данных

После удаления страниц из поиска Google и Яндекс необходимо удалить эти URL также из собственной системы данных—базы данных, логов, кэша. Иначе страницы останутся в вашей системе и при переиндексации могут снова появиться в результатах поиска. Удаление URL по префиксу требуется при закрытии старых версий API (/api/v1/), удалении архивных разделов или очистке устаревших логов.

SQL методы удаления

Основной способ—SQL запрос. В MySQL используется простой синтаксис:

DELETE FROM pages WHERE url LIKE '/api/v1/%';

Это условие удалит все страницы с URL, начинающимся на /api/v1/. Перед удалением всегда проверьте количество затронутых записей:

SELECT COUNT(*) FROM pages WHERE url LIKE '/api/v1/%';

В PostgreSQL синтаксис отличается—используется регулярное выражение:

DELETE FROM pages WHERE url ~ '^/api/v1';

Варианты синтаксиса зависят от системы баз данных. Oracle, SQLite и другие СУБД имеют собственные условия для удаления по префиксу. Убедитесь, что запрос работает правильно перед полным удалением.

Защита данных

Используйте транзакции для защиты от ошибок:

BEGIN;
DELETE FROM pages WHERE url LIKE '/api/v1/%';
-- проверка результата
ROLLBACK; -- или COMMIT если OK

Процесс удаления определённых URL должен включать:

  • резервную копию таблицы перед началом;
  • SELECT с тем же условием для проверки затронутых страниц;
  • запуск удаления внутри транзакции;
  • ROLLBACK, если результат не соответствует ожиданиям.

Убедитесь, что приложение не добавляет новые данные во время удаления.

Примеры кода

Python помощью SQLAlchemy:

from sqlalchemy import create_engine, text

engine = create_engine('mysql+pymysql://user:pass@localhost/db')
with engine.connect() as conn:
    result = conn.execute(text(
        "DELETE FROM pages WHERE url LIKE :prefix"
    ), {"prefix": "/api/v1/%"})
    conn.commit()
    print(f"Удалено: {result.rowcount}")

JavaScript помощью Node.js:

const mysql = require('mysql2/promise');

async function deleteByPrefix(prefix) {
  const conn = await mysql.createConnection({...});
  const [res] = await conn.execute(
    'DELETE FROM pages WHERE url LIKE ?',
    [prefix + '%']
  );
  console.log(`Удалено: ${res.affectedRows} страниц`);
}

Особенности при большом объеме

Если нужно удалить определенные URL (более миллиона страниц) по одному условию, разделите на части:

DELETE FROM pages WHERE url LIKE '/api/v1/%' LIMIT 10000;

Повторяйте запрос в цикле, пока данные не удалены. Так вы избежите перегрузки серверов.

Проверьте индексы—столбец url должен имеет индекс. На больших таблицах без индекса удаление займет часы. Индекс ускоряет поиск нужных страниц.

Если у других таблиц есть FOREIGN KEY на эту таблицу, либо удалите зависимые данные предварительно, либо настройте CASCADE DELETE (осторожно—может удалить нужные данные в других системах).

Логируйте все операции для аудита и восстановления при необходимости.

Критически важно: не удаляйте в production без тестирования на staging. Всегда имеет свежий backup перед критическими операциями.

Удаление из поисковых систем Google и Яндекса

Удаление из Google Search Console

После удаления страниц из базы данных владельцам сайтов нужно убрать их из индекса Google. Инструмент удаления в Google Search Console — самый быстрый способ сделать это. Укажите адрес страницы или префикс, отправьте запрос на удаление. Google обработает его за дни-недели, покажет статус: одобрено или нет. Инструмент для удаления работает временно — если вернуть страницу в базу, она снова попадёт в поиск.

Яндекс Вебмастер и альтернативные методы

В Яндекс Вебмастере удаление страниц работает так же. Яндекс часто быстрее исключает из индекса. Если нет доступа к инструментам, используйте robots.txt: строка «Disallow: /old-prefix/» запретит роботам обходить эти страницы. Метатег noindex в HTML даст похожий результат. Оба способа медленнее, но не требуют доступа к инструментам поисковых систем.

HTTP коды и мониторинг статуса

Удаляемые страницы должны возвращать код ответа сервера 404 или 410 Gone. Код 410 сигнализирует постоянное удаление и ускоряет исключение из поиска. На практике процесс занимает от недели до нескольких месяцев. Проверяйте статус удаления в Google Search Console и Яндекс Вебмастер. Если старые страницы снова появились в поиске, отправьте запрос ещё раз.

Наверх