Главная > Программирование > Неудавшаяся настройка ссылок в wordpress

Неудавшаяся настройка ссылок в wordpress

Как сделать работающую ссылку в wordpress

 Обнаружил небольшой косяк в ссылках wp, сам поправить не могу. Постараюсь подробно описать ситуацию, вдруг кто-нибудь поможет.

1. Зачем всё это понадобилось

Переделывал какой-то старый сайт из веб-архива на wordpress. Раньше, судя по всему, сайт был на друпале, и поэтому ссылки на страницы с постами имеют вид:

http://domen.com/info/node/123

Может друпал был установлен в какую-то директорию /info/, но не важно. И вот, много урлов такого вида http://domen.com/info/node/{трёхзначное число} осталось на других сайтах в качестве ссылок, а также немножко — в индексе ПС. Естественно, ни ссылки, ни индексацию терять не хотелось, поэтому решил восстановить именно такие адреса страниц.

Ну казалось бы, чего проще. Итак, настройка требуемых ссылок в wordpress проводилась следующим образом. Создал в WP рубрику с ярлыком ‘info’, затем в ней подрубрику с ярлыком ‘node’, далее в админке WP в «Настройках постоянных ссылок» поставил «Произвольно» и ввёл шаблон адреса http://domen.com/%category%/%postname%. Адреса постов по логике должны были принять вид

http://domen.com/category/info/node/123

Для того, чтобы убрать из адреса слово category, установил плагин Remove Category URL. Теперь нужно было просто обзывать посты трёхзначными числами, и адреса должны были принять требуемый вид. Но не сработало.

2. Суть проблемы

WordPress через своё ЧПУ напрочь не хочет воспринимать имена постов в виде только чисел без букв. Когда я проделал всё, что описано выше, то при редактировании адресов постов в админке WP никаких предупреждений и ошибок не выскакивало, адреса устанавливались какие и хотел. При выводе главной страницы блога все анонсы постов выводятся нормально, в хронологическом порядке, с требуемыми ссылками «Читать далее…» http://domen.com/info/node/123. Но при нажатии на такую ссылку — выводится страница ошибки 404, типа нет такого материала. Ну и, конечно, если просто в браузере набрать http://domen.com/info/node/123 , при том, что пост с присвоенным адресом «123» существует, всё равно получаем страницу 404.

Как это можно поправить? Тут можно вспомнить ещё один известный уже косяк ссылок в wp, а именно, не воспринимаются слэши и просто выкидываются. Но об этом потом.

Если бы ошибся при редактировании, то и в ленте на главной странице посты бы выводились с другими адресами — а в ленте всё нормально.

3. Как пробовал решать

Вордпресс стоит последней версии (на момент написания статьи — 4.2.2). Сначала подумал, что дело в плагине «Remove Category URL» (или каком-нибудь другом), поэтому отключил все, что были установлены на тот момент. Не помогло.

Второе, что хотел сделать — полезть в файл options-permalink.php и попробовать чё-нить там исправить, но понял, что разбираться буду долго, так что это оставил на потом.

Третье, что пришло на ум — делать произвольные ссылки и переадресовывать в htaccess. Так пока и сделал.

4. Временное решение. Попробовал обзывать посты, начиная с буквы, то есть не 123, а a123 — так всё срабатывает нормально. После этого настроил переадресацию через .htaccess, чтобы http://domen.com/info/node/123 перенаправляло на http://domen.com/info/node/a123 — так пока и осталось, чтобы хоть с внешних ссылок на 404 страницу не попадали. Недостаток очевиден: получается у каждого поста как минимум по два дубля, причём индексацию ни того, ни другого нельзя запретить. Если запрещаем индексацию страниц вида http://domen.com/info/node/a123 , то в ленте главной страницы и в лентах категорий будут содержаться запрещённые к индексации ссылки на посты.

5. Как поступить? Хотел бы спрость совета у специалиств по php и конкретно по WP. Может, у этой проблемы есть какое-то простое решение, а я мучаюсь. Посоветуйте пожалуйста, можно ли сделать, чтобы чпу вордпресса работало с назвариями постов, состоящими из одних цифр? Спасибо за любую помощь.

Решение найдено!

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

  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.