#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. Это было то, что я там говорил