В настоящее время у меня есть блог на wordpress (apache2, ubuntu linux), например, mysite.com
используя привязку на основе идентификатора, например http://mysite.com/?p=547
. У меня две цели:
mysite.com/blog
/{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. На мой взгляд, есть два решения - одно более изящное, чем другое.
Напишите код, который просматривает базу данных Wordpress в соответствии с идентификатором страницы в GET и 301 пользователем соответственно.
Сделайте редирект с 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-адреса.
Закладки - с ними ничего не поделаешь.