Костыли

По поводу одного из глюков, описанных во вчерашнем посте и не решаемых известными мне здравыми способами. Эксперименты с пермалинками нужно заканчивать, как только поисковики начинают индексировать нулёвый блог. На живом примере - предыдущий шаблон на линки у меня стоял - только имя поста (/%postname%/), на прошедшей неделе я его переписала на более сложный шаблон, включающий имя_категории+год+месяц+имя поста:

/%category%/%year%/%monthnum%/%postname%/

Но. Предыдущие посты великий Яндекс уже проиндексировал и ссылка на них появилась в выдаче. Ссылка, разумеется, не валидная, посетители получают стр. 404. Берём один из старых постов (из тех, которые проиндексировались со старым шаблоном) , к примеру - “ Про реверсные зоны вопросец по seo на Блог NunDesign” - ведёт на урл “blog.nundesign.com/reverse-lookup-zone/

Создаём в корне блога рубрику с именем “reverse-lookup-zone” и в этой рубрике создаём файл index.html со следующим содержимым:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >

<head>
<title> Про реверсные зоны вопросец по seo на Блог NunDesign</title>
<script language=”JavaScript1.1″ type=”text/javascript”>
<!–
location.replace(”http://blog.nundesign.com/seo/2007/04/reverse-lookup-zone/”); // текущая страница будет заменена в history на новую - важно в плане юзабилити
//–>
</script>
<noscript>
<meta http-equiv=”Refresh” content=”0; URL=http://blog.nundesign.com/seo/2007/04/reverse-lookup-zone/”> <!– для тех нескольких процентов <сёрферов>, которые отключили JavaScript –>
</noscript>
</head>
<body>
Страница живёт по адресу <a href=”http://blog.nundesign.com/seo/2007/04/reverse-lookup-zone/”>Про реверсные зоны вопросец по seo</a>

</body>
</html>

В хидере прописан обычный метатег с редиректом на валидную страниц, скрипт там делает то же самое, но ещё и заменяет урл на валидный в хистори, ну а чтобы совсем уж красиво и честно было, причём для всех - в body делаем простую ссылку туда же.

Но этот способ, ясное дело, подходит только если у вас есть малое конечное количество постов с неправильными ссылками, сформированными по старому шаблону в настройках пермалинков, что делать когда wordpress`овскому движку нужно массово задавать более сложные правило -не знаю и пока идей даже нет.

RSS feed | Trackback URI

14 Comments »

2007-05-14 11:37:44

Гораздо правильнее было бы все это перенаправить через mod_rewrite в .htaccess

 
Comment by Belt
2007-05-14 13:10:13

А мне кажется, что проще было бы создать в корне сайта сайта .htaccess со следующим содержанием:

Redirect permanent /reverse-lookup-zone/ http://blog.nundesign.com/seo/2007/04/reverse-lookup-zone/

и так для каждого “устаревшего” URL

Это даст перенаправление по 301 ошибке, что в теории автоматически заменит ссылку в избранном если она там была + google корректно заменит это у себя в поиске. Единственная проблема - Яндекс, который у себя в поиске так и оставит старый URL… возможно вместе с новым. А чтобы уж полностью подогнать и там, надо через некоторjе время, когда Яндекс это всё схватит запретить ему старые адреса через robots.txt

 
Comment by nundesign
2007-05-14 19:12:39

Денис и Belt, во-первый пожалуйста уж чуть подробнее расскажите - вот это и весь синтаксис:
Redirect permanent url1 url2 или что-то там в htaccess ещё надо писать?
Честно говоря это уже тюнинг уровня, которого как раз хотелось бы избежать. К примеру, потому, что хочется свести к минимуму все исправления в движке (помимо файлов оформления и разметки в шаблонах) - чтобы, к примеру, в случае, если выйдет новая версия wp или будет вынужденный переезд куда-то, или вообще сайт погибнет и восстанавливать блог придётся из последнего экспорта контента - как можно меньше вмешательств.
Вот в комментариях на бете предложили использовать плагин для mod_rewrite - мне кажется, перенести весь тюнинг в скины и плагины - это более логичное решение, хотя и более громоздкое.

 
2007-05-14 20:02:04

Прежде чем давать совет хочется услышать насколько большой объем работ. То есть сколько всего есть старых постов, которые надо перенаправлять, сколько вариантов url и какие это то варианты (шаблон url).

Просто исправить для парочки постов это одно, а вот для пары десятков уже другое.

 
Comment by Belt
2007-05-14 23:56:23

Ну не знаю насчёт плагина для мод_рерайт… мне кажется это слишком сложный способ. Наверняка там всё настраиваемо, но всегда хочется простого и надежного… тривиального решения. Тем более, мне кажется, что мод_рерайт всё же предназначен не для этого… по сути своей. Сложные преобразования с подменами URL - пожалуйста, а простое перенаправление… ну это забивание гвоздей микроскопом.

Итак мы имеем чудесный конфигурационный файл апача .htaccess (кстати его же мы имеем и в случае мод_рерайт, но не суть важно) в корне сайта. И пишем туда тот самый редирект, который сообщает бр(а/о)узеру, что его посылают, в прямом смысле этого слова, по новому адресу.

Подробно можно почитать вот тут http://httpd.apache.org/docs/2.2/mod/mod_alias.html.

Вкратце синтаксис таков:
Redirect [status] URL-path URL
где [статус]:
permanent (301) - ресурс перемещен навсегда/постоянно.
temp (302) - ресурс перемещен временно
seeother (303) - заменен
gone (410) - был, но весь вышел.

в данном конкретном случае надо сообщить клиентам, что страница переехала по новому адресу, для этого набираем

redurect permanent
или

redurect permanent

и таких строчек сколько нужно в зависимости от количества перемещенных страниц.

Плюсы этого подхода следующие:
1. Полная независимость от WP в частности и вообще от наполнения сайта, поскольку работает на уровне веб сервера.
2. Корректно понимается Гуглом.
3. Не совсем корректно понимается Яндексом, поскольку он будет предпочитать старые адреса, но всё равно работает.
4. Корректно понимается клиентскими браузерами, поскольку они обновляют свои ссылки в “избранном” и возможно хистори (надо проверить).
5. И главное - до тех пор, пока данный конфигурационный файл “живет” в корне сайта будут полноценно поддерживаться все вбитые в нем устаревшие урлы.

Вуаля! И полная независимость от версии WP или любого другого движка сайта/блога/и т.п.

Дешево и сердито :)

 
Comment by Belt
2007-05-15 00:00:15

Так… какая жаль, что нельзя редактировать, а у меня нету ОпенИД… выкинулись куски с угловыми скобками, собственно логично… Итак, потерявшийся кусок комментария (заменил угловые скобки на фигурные):

redurect permanent {адрес относительный без http://www.sait.com/} {адрес полный}
или

redurect permanent {страница старая} {http://www.site.com/страница новая}

 
Comment by nundesign
2007-05-15 12:28:56

Денис, да в общем-то что-то около 10-ти первых постов, вот и весь объём.
Belt, спасибо :) кстати угловые скобки не выкидываются по-моему, если заменять их на &lt; и &gt; соответственно. Вот как раз сейчас и проверю :)

 
2007-05-15 13:21:13

Тогда проще всего как Belt написал. Rewrite стоило использовать при больших кол-ах :)

 
2007-07-14 06:49:36

Я написал хак к функции, которая отвечает за формирование заголовков в Wordpress. При возникновении если к моему блогу обращаются по несуществующему сайту, функция проверяет, не было ли такой страницы раньше. Список я задаю вручную в конфиге. Если такая страница была, то делает 301-редирект. Если нет, показывает 404-ю ошибку.

Мне это пригодилось, когда я увидел массовые заходы с одного форума. Там человек ссылочку неверно поставил. В URL попала закрывающая скобка.

Я сделал такой хак, и те, кто шел на мой_блог/страница) корректно перенаправлялись на мой_блог/страница

Что важно: этот метод позволяет поисковикам обновлить URL в своих базах, а браузерам — свои закладки.

 
Comment by nundesign
2007-07-14 13:55:48

Алексей, я так круто не пропачу, в конечном итоге поступила проще: в файле .htaccess прописала правила для mode rewrite
Redirect permanent /reverse-lookup-zone/ http://blog.nundesign.com/seo/2007/04/reverse-lookup-zone/
И, если честно, прописала правила для редиректа для всех записей, которые были созданы со старым шаблоном для пермалинков и уже проиндексированы поисковиками (или на них откуда-то уже были ссылки в старом формате).
Мне не нравится такое решение, это в любом случае кривость, но мой первый опыт тюнинга WP - и никто не подсказал, какие шаблоны пермалинков лучше и почему захочется выбрать тот или иной.
Вот у вас, смотрю, в шаблоне нет формата “+год” “+месяц”, только “+категория” “+имя” - вам всегда удобно так, никогда не хотелось добавить в урлы дату?

 
2007-07-14 16:21:16

Да, мне с такими урлами удобнее. Дело в том, что у меня блог не новостной (когда сама дата важна бывает), а тематический. Людям чаще интересно, что еще я написал по этой теме, чем что я написал такого-то числа (мог ведь и ничего не написать).

Поэтому я решил, что URL будет говорить о принадлежности к определенной категории. Читателям же дал удобные инструменты: рубрикатор и поиск (Яндексовый).

У Вордпресса, кстати, есть такая особенность. Предположим, урл поста такой: мой_блог/рубрика/пост. Если просто отрезать пост, то получим 404 ошибку, потому как адрес рубрик в Вордпрессе такой: мой_блог/categories/рубрика

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

 
Comment by nundesign
2007-07-14 16:31:10

Алексей, может, это как раз особенность выбранного вами шаблона для пермалинков? Я сейчас проверила на своём шаблоне (стандартный, /%category%/%year%/%monthnum%/%postname%/ - дополнительных хаков не было), смотрите:
Урл этого поста:
http://blog.nundesign.com/tools/2007/05/wordpress-permalink-hack/
Срезаем имя поста
http://blog.nundesign.com/tools/2007/05/
получаем фильтр по категории tools с ограничением по дате - только посты за 2007, май. Срезаем дату - получаем фильтр по категории:
http://blog.nundesign.com/tools/
И все без тюнинга отрабатывают без 404
Мне это нравится, потому что я лично много пользую навигацию ручками, правкой урла, везде.

 
2007-07-14 18:26:58

Понял в чем дело. Я кога осваивал Вордпресс, ввел префикс зачем-то. Сейчас на тестовом блоге убрал — действительно, работает нормально (без 404) при обрезании URL-ов.

Дело уже давно было, я и забыл. Подправлю вечерочком у себя. Кстати, есть проблемы с уведомлениями от Вашего блога. Буква «Б» заменяется на «?», например.

[?лог NunDesign] New Comment On: ?о???ли

Я использую плагин wp_mail_cyrillic (ставлю кодировку писем в win-1251), чтобы такого не было.

 
Comment by Вячеслав Subscribed to comments via email
2007-08-14 19:30:08

У Вас очень интересный сайт! Мне очень понравилось!

 
Name (required)
E-mail (required - never shown publicly)
URI
Subscribe to comments via email
Your Comment (smaller size | larger size)
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> in your comment.