Перенаправление неправильных URL-адресов SEO на правильные

#php #redirect #seo

#php #перенаправление #seo

Вопрос:

В настоящее время я использую следующие правила для перенаправления со стандартных URL-адресов на URL-адреса SEO:

 RewriteRule ^books/v/([0-9] )/(.*)/page([0-9] ) books.php?type=bookamp;id=$1amp;title=$2amp;page=$3 [L]
RewriteRule ^books/c/([0-9] )/(.*)/page([0-9] ) books.php?type=categoryamp;id=$1amp;title=$2amp;page=$3 [L]
RewriteRule ^books/v/([0-9] )/(.*) books.php?type=bookamp;id=$1amp;title=$2 [L]
RewriteRule ^books/c/([0-9] )/(.*) books.php?type=categoryamp;id=$1amp;title=$2 [L]
RewriteRule ^books books.php [L]`
  

Теперь, что я хотел бы сделать, это автоматически перенаправлять URL-адреса с правильными идентификаторами и неправильными заголовками на правильный URL.

Stackoverflow делает аналогичную вещь — если вы введете URL-адрес вопроса с правильным идентификатором, но с неправильным заголовком, он автоматически перенаправит вас на правильный URL.

Я предполагаю, что это должно быть сделано с помощью PHP, но я действительно не знаю, как лучше всего сделать перенаправление.

Комментарии:

1. Поместите в свой index.php файл вызов скрипта, который сначала проверяет индекс на соответствие значению и корректирует с header() помощью и die() . Это будет иметь небольшие накладные расходы, если оно будет запущено до запуска любого другого содержимого.

Ответ №1:

PHP — это способ сделать подобное перенаправление.

Основная идея проста:

  • Вызовите PHP-скрипт с частями ID и title, как показано выше

  • Внутри PHP-скрипта загрузите запись с идентификатором из базы данных

  • Сопоставьте заголовок записи в базе данных и заголовок в URL.

  • Если они не совпадают, сделайте перенаправление заголовка на правильный URL-адрес с идентификатором и заголовком из базы данных:

     header("Location: /books/v/123456");
    die();
      

Комментарии:

1. Лучшим способом было бы оптимизировать начальный поиск запроса по числовому идентификатору, но только если он окажется бесконечно медленным.

2. @Jared да, справедливо, это хорошая идея, если производительность является проблемой, но, возможно, это должно происходить достаточно редко, поэтому неоптимизированный подход может быть в порядке.

3. Я действительно соглашался с этим ответом, но вы отредактировали утверждение, на которое я отвечал. Я думаю, вы имели в виду, что это .htaccess не может быть сделано явно, верно? (Я также изначально думал, что ОП спрашивает.)

4. @Jared ах, я вижу! Да, PHP — единственный способ сделать это. Это превышает возможности .htaccess. Это было то, что я там говорил