Изменение структуры URL WordPress при сохранении правильных перенаправлений 301 с помощью mod_rewrite - PullRequest
3 голосов
/ 12 марта 2009

В настоящее время у меня есть блог, настроенный на WordPress с использованием URL-адресов, например:

www.domain.com / блог /? PID = 384092817

Это было до того, как я узнал что-либо о чем-либо. Сейчас там много контента, и я хочу изменить свою структуру URL на:

www.domain.com / мой-пост-титульный 384092817

Есть ли способ настроить мой .htaccess и перезапись мода, чтобы, когда пользователи переходят по первому URL, они получают перенаправление 301 на второй URL? Я знаю, как изменить настройку адреса WordPress (URL) с www.domain.com/blog на www.domain.com, а настройку постоянной ссылки на /% postname% -% post_id%, но как мне указать старые URL-адреса для перенаправления на новые?

Ответы [ 2 ]

4 голосов
/ 12 марта 2009

Вы действительно имеете в виду, что когда пользователи переходят на второй URL, он будет переписан на первый? Это можно сделать с помощью

RewriteRule /blog/.+-(\d+)$ /blog/?pid=$1

Если вы хотите отправить 301 переадресацию со старых URL-адресов на новые, вы не сможете сделать это с помощью файла .htaccess. Причина в том, что Apache mod_rewrite не имеет доступа к заголовку вашего сообщения, поэтому он не будет знать, какой заголовок вставить в URL. Вы должны будете сделать это перенаправление с PHP.

РЕДАКТИРОВАТЬ : знаете, на самом деле это не совсем так. С помощью директивы RewriteMap вы можете делать довольно сумасшедшие вещи, например, инструктировать Apache, чтобы он запросил произвольную программу для выполнения перезаписи, и таким образом вы могли бы иметь, скажем PHP-скрипт, который выполняет некоторую работу с базой данных, чтобы выяснить, что такое заголовок, и переписывает URL-адрес, исходя из этого. Но это кажется слишком сложным решением, и я бы не советовал его делать - гораздо проще и проще отправлять перенаправление напрямую из PHP.

3 голосов
/ 17 марта 2009

В зависимости от вашей версии WP, вы можете просто использовать плагин Permalink перенаправления - он поможет вам в WordPress и без mod_rewrite Однако, начиная с WordPress 2.3, многие из этих должны работать автоматически . В этот момент единственное, что вам нужно сделать, это перенаправить все ваши запросы / blog / ... на маршрут, что вы можете сделать через mod_rewrite примерно так:

RewriteRule ^blog(.*) $1 [QSA]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...