Просмотр темы
Помощь с редиректом
|
|
Pisatel |
Опубликовано 15.09.2013 08:01
|
![]() Ветеран ![]() Сообщений: 678 Зарегистрирован: 08.02.2013 05:51 |
Всем доброго времени суток! Мастера, нужна помощь. Сделал ЧПУ, страницы стали выглядеть, например, так article5-nazvanie-statyi, но прикол в том, что эта же статья откроется по старому адресу articles.php?article_id=5. Самым простым вариантом, конечно, будет прописать в роботс но хочется сделать редирект, дабы сохранить пузомерки и постепенно выкинуть старые страницы из индекса. Пробую нечто подобное
но не срабатывает чего-то... |
|
|
dark |
Опубликовано 15.09.2013 09:26
|
![]() Администратор ![]() Группа поддержки ![]() Сообщений: 222 Зарегистрирован: 05.12.2010 22:22 |
Не помню точно, но кажется redirect(BASEDIR."article$1-(.*?)"); редиректит через яваскрипт. Проверь, для поисковиков это не очень. Лучше использовать header("HTTP/1.1 301 Moved Permanently"); header("Location: ".путь); |
|
|
FILON |
Опубликовано 15.09.2013 10:18
|
![]() Администратор ![]() Разработчики ![]() Группа поддержки ![]() Сообщений: 188 Зарегистрирован: 05.09.2012 12:13 |
Pisatel написал:
но не срабатывает чего-то... Если Вы хотите вернуть результаты поиска из preg_match, то используйте дополнительный параметр $matches. То, что написали Вы (строка 2), мягко говоря, бред.
dark написал: Не помню точно, но кажется redirect(BASEDIR."article$1-(.*?)"); редиректит через яваскрипт. Лучше изучаем параметры функции. По умолчанию перенаправление через HTTP-заголовок.
What's common between Halloween and Christmas? Every programmer knows: 31 oct = 25 dec.
|
|
|
Pisatel |
Опубликовано 15.09.2013 11:00
|
![]() Ветеран ![]() Сообщений: 678 Зарегистрирован: 08.02.2013 05:51 |
FILON, благодарю за подсказку насчет возврата значений из поиска при совпадении. Но у меня чего-то даже true не получается вернуть... Например, пробую
По идее, если я зайду на site.ru/articles.php?article_id=87 , то в титл статьи должно добавиться YES, но нету этого... В чем туплю? |
|
|
FILON |
Опубликовано 15.09.2013 15:37
|
![]() Администратор ![]() Разработчики ![]() Группа поддержки ![]() Сообщений: 188 Зарегистрирован: 05.09.2012 12:13 |
Забыли экранировать служебные символы в регулярном выражении. What's common between Halloween and Christmas? Every programmer knows: 31 oct = 25 dec.
|
|
|
Pisatel |
Опубликовано 15.09.2013 15:43
|
![]() Ветеран ![]() Сообщений: 678 Зарегистрирован: 08.02.2013 05:51 |
FILON, экранировал, кроме "=", сейчас попробую. UPD Не, не получается. Вставляю в includes/header_includes.php... Чет совсем бида... Изменил(а) Pisatel, 15.09.2013 15:53 |
|
|
FILON |
Опубликовано 15.09.2013 15:58
|
![]() Администратор ![]() Разработчики ![]() Группа поддержки ![]() Сообщений: 188 Зарегистрирован: 05.09.2012 12:13 |
ОК :) Знак равенства по документации входит в список служебных символов, но и без его экранирования данное регулярное выражение будет работать. В регулярных выражениях служебными считаются следующие символы: . \ + * ? [ ^ ] $ ( ) { } = ! < > | : - UPD: Попробуй такой вариант. Вместо комментария в коде добавь обработку значения переменной $data['article_subject'] (транслитерация, замена на escape-последовательности специальных символов и т.п.).
Изменил(а) FILON, 15.09.2013 16:45 What's common between Halloween and Christmas? Every programmer knows: 31 oct = 25 dec.
|
|
|
Pisatel |
Опубликовано 15.09.2013 16:48
|
![]() Ветеран ![]() Сообщений: 678 Зарегистрирован: 08.02.2013 05:51 |
FILON, ага, вот так уже работает лучше- верное направление. Добавлю функцию- и все будет гуд! Спасибо! Жаль, лишнее подключение, но ведь это, я надеюсь, не навсегда: выпадут из индекса- можно просто через роботс запретить. Еще раз спасибо! |
|
|
dark |
Опубликовано 16.09.2013 09:47
|
![]() Администратор ![]() Группа поддержки ![]() Сообщений: 222 Зарегистрирован: 05.12.2010 22:22 |
И все же я порекомендую пользоваться моим вариантом редиректа, а не стандартным. Стандартный отдает заголовок 302 Moved Temporarily («перемещено временно») А в указанном случае требуется все же 301 Moved Permanently («перемещено навсегда») да бы "не давать лишние надежды поисковикам", что те страницы вернуться. |
|
|
Pisatel |
Опубликовано 16.09.2013 15:47
|
![]() Ветеран ![]() Сообщений: 678 Зарегистрирован: 08.02.2013 05:51 |
А что, если сделать альтернативу стандартной функции? Например, вот стандартная
Ну и что-то типа такого сделать
|
|
|
Zaxap |
Опубликовано 06.04.2014 00:58
|
![]() Элита ![]() Сообщений: 1090 Зарегистрирован: 05.09.2012 10:32 |
Как замутить 404 редирект для всех страниц с *.php так, чтобы страницы без *.php, "созданные в .htaccess", оставались рабочими? Необходимо, чтобы при переходе, к примеру, на /news.php, система отвечала 404 ошибкой, а при переходе по /news/ пропускала. Код выглядит примерно так в таком же порядке: Я, конечно, понимаю, что намудрил тут чего-то не так, но вот как к этому подойти иначе - черт знает... В принципе, мне нужно запретить переход по всем url, содержащим *.php, вот и все... А как такое вот на php замутить, если целесообразнее? UP Изменил(а) Zaxap, 08.04.2014 05:27 Зло не дремлет, а я добрый...
|
|
|
Pisatel |
Опубликовано 08.04.2014 05:37
|
![]() Ветеран ![]() Сообщений: 678 Зарегистрирован: 08.02.2013 05:51 |
Зачем 404? Лучше ж 301, чтобы пс были довольны. У меня это выглядит так (includes/header_includes.php):
|
|
|
Zaxap |
Опубликовано 08.04.2014 05:50
|
![]() Элита ![]() Сообщений: 1090 Зарегистрирован: 05.09.2012 10:32 |
Pisatel, спасибо! Заморочка у меня такая ![]() Зло не дремлет, а я добрый...
|
|
Поделиться этой темой | |
Социальные закладки: |
![]() ![]() ![]() ![]() ![]() ![]() |
URL: | |
BBcode: | |
HTML: |
Перейти на форум: |