Назад | Перейти на главную страницу

Как переместить сайт и переключить структуру ссылок с помощью перенаправления HTTP 301

В настоящее время у меня есть блог на wordpress (apache2, ubuntu linux), например, mysite.com используя привязку на основе идентификатора, например http://mysite.com/?p=547. У меня две цели:

  1. переместить мой блог в mysite.com/blog
  2. измените структуру ссылок на /{post-title} вместо того /?p={post-id}

Переход в новую структуру должен быть достаточно просто, как и изменение настройки в wordpress для использования новой структуры постоянных ссылок.

Я бы тоже хотел не нарушать random(1..100) сайты, которые в настоящее время ссылаются на меня. Я хотел бы использовать постоянное перенаправление HTTP 301, но я не уверен, как это сделать, изменив настройки apache.

Первой проблемой будет перенаправление на /blog/ по всем запросам.

Вторая проблема будет заключаться в обработке новой структуры ссылок. Я полагаю, что могу достаточно легко запросить базу данных mysql и сгенерировать что-то вроде ?p={post-id} > {post-title}, но я не уверен, как должен выглядеть синтаксис и где его нужно поместить.

Любая помощь приветствуется.

Когда вы меняете схему URL-адресов с p = 123 на post-title, wordpress автоматически переводит 301 посетителя со старого URL-адреса идентификатора на ваш правильный URL-адрес - так что это разобралось.

Далее, поскольку доступ к вашим материалам осуществляется через? P = [0-100], вы можете легко решить эту проблему через PHP. На мой взгляд, есть два решения - одно более изящное, чем другое.

  1. Напишите код, который просматривает базу данных Wordpress в соответствии с идентификатором страницы в GET и 301 пользователем соответственно.

  2. Сделайте редирект с 1 на 1 301, что-то вроде

<?php
if(isset($_GET['p']) && is_numeric($_GET['p'])) {
  header("HTTP/1.1 301 Moved Permanently");
  header("Location: http://www.mydomain.tld/blog/?p=".$_GET['p']);
}
?>

Приведенный выше код не тестировался, но должен иллюстрировать идею. Приведенный выше код во многих случаях вызывает 2 301-е, но что касается поисковых систем, он должен отправлять их только через 301 дважды и заставлять их обновлять свои URL-адреса.

Закладки - с ними ничего не поделаешь.