Форум программистов, компьютерный форум, киберфорум
Наши страницы

PHP для начинающих

Войти
Регистрация
Восстановить пароль
 
 
mat777
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 135
#1

301 редирект внутренних страниц - PHP

24.12.2016, 07:15. Просмотров 626. Ответов 21
Метки нет (Все метки)

Доброго времени суток.

Допустим есть страница сайта такого вида:
сайт/%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0-1 (сайт/страница-1)
Пытаюсь сделать 301 редирект на
сайт/%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0-2 (сайт/страница-2)

Изначально страница имела такой вид:
сайт/svname.php?name=%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0-1 .
Но через .htaccess убрал svname.php?name= через RewriteRule ^([^/\.]+)/?$ svname.php?name=$1 [L]. Расширение .php тоже убрал через .htaccess.

Теперь не могу придумать, как редиректнуть.

Пробовал сделать через PHP, вытянув с таблицы ссылку:
PHP
1
2
3
4
5
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://сайт/'".$row ['link'];."'");
exit();
?>
- но не работает ( код 500 выдает).

В идеале хотелось бы сделать именно на PHP, чтобы не захламлять .htaccess большим количеством 301-х, но буду рад любой помощи!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2016, 07:15
Я подобрал для вас темы с готовыми решениями и ответами на вопрос 301 редирект внутренних страниц (PHP):

301 редирект для всех страниц - PHP
Есть страницы вида site.ru/folder/page.php?id=10 site.ru/folder/list.php?id=10 хотел их перенаправить на: ...

301 редирект - PHP
Доброго дня всем. Сайт перенесли на другой домен. На старом поставили заглушку. Встал вопрос - настроить 301 редирект таким образом,...

сделать редирект 301 - PHP
Здравствуйте! Не знаю правильно ли я выбрала раздел, прошу не ругать за нехватку знаний. Прошу помощи вот в чём: есть адрес сайта...

Пытаюсь сделать редирект 301 - PHP
Пытаюсь сделать редирект 301 Передо мной стоит задача сообщить поисковикам, что основной адрес это http без www. Яндекс, например,...

Как сделать 301 редирект с двойного слэша на одинарный - PHP
день добрый всем! подскажите, как сделать 301 редирект с двойного слэша на одинарный? например: домен/раздел1//раздел2/страница, 301...

Редирект отдельных страниц сайта - PHP
Есть 2 домена. Был переделан сайт 1.ru - старый сайт 2.ru - новый сайт Я хочу на каждую страниц написать редирект, делаю так: ...

21
strannik-ps
4 / 4 / 2
Регистрация: 19.03.2016
Сообщений: 32
24.12.2016, 09:12 #2
PHP
1
2
3
header($_SERVER['SERVER_PROTOCOL'].' 301 Moved Permanently');
header('Location: http://сайт/'.$row['link']);
exit();
1
mat777
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 135
24.12.2016, 10:58  [ТС] #3
strannik-ps, перекидывает на главную $row['link'] походу вообще не видит.
0
strannik-ps
4 / 4 / 2
Регистрация: 19.03.2016
Сообщений: 32
24.12.2016, 11:05 #4
Цитата Сообщение от mat777 Посмотреть сообщение
перекидывает на главную $row['link'] походу вообще не видит.
Значит массив пустой, копайтесь в $row['link'] вам нужно вытащить link из базы или где он там у вас...
0
mat777
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 135
24.12.2016, 11:15  [ТС] #5
Цитата Сообщение от strannik-ps Посмотреть сообщение
нужно вытащить link из базы или где он там у вас
Да из базы. массив не пустой. если в него добавляю часть с http://сайт/
PHP
1
header('Location: '.$row['link']);
редирект срабатывает но страница становиться пустой
0
miketomlin
Заблокирован
24.12.2016, 11:26 #6
Так значит ошибка в целевой странице.

Добавлено через 2 минуты
Как вы глядят ссылки в БД? Судя по тому, что вы писали выше, они должны быть относительными. Хотя бы слеш добавьте в начало.

Добавлено через 1 минуту
...в команде выше.
0
mat777
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 135
24.12.2016, 11:42  [ТС] #7
На странице все генерируется через переменную $name в которой лежит чпу (в таблице "chplink") вида тема-два-тра-та-та-2016. link-отдельное поле только для редиректа нужной записи.
Выводится все благодаря коду ниже (писал его не я, принцип его работы не особо понял)
PHP
1
$name = isset($_GET['name']) ? $_GET['name'] : null;
Когда добавляю код редиректа, на всех страницах, не только на нужной, либо пусто либо ошибка либо все перенаправляются на главную.
0
strannik-ps
4 / 4 / 2
Регистрация: 19.03.2016
Сообщений: 32
24.12.2016, 11:53 #8
Посмотрите что выдает $row['link']
PHP
1
var_dump($row['link']);
и уже будет понятней какого вида ссылка там и куда ведет
0
mat777
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 135
24.12.2016, 12:23  [ТС] #9
Выдаёт string(31) "%D1%82%D0%B5%D0%BC%D0%B0-1-2016" как и записано в бд
0
miketomlin
Заблокирован
24.12.2016, 12:30 #10
Слеш добавьте в заголовок Location, как я выше написал.

Страница /%D1%82%D0%B5%D0%BC%D0%B0-1-2016 сама по себе открывается?
0
mat777
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 135
24.12.2016, 12:55  [ТС] #11
Да страница работает. 2-я тоже есть (на которую нужно перенаправлять). А вот на счет слеша, не догнал куда его ставить? (почти сутки бьюсь с 301-м, видимо подустал)
0
strannik-ps
4 / 4 / 2
Регистрация: 19.03.2016
Сообщений: 32
24.12.2016, 12:57 #12
Цитата Сообщение от mat777 Посмотреть сообщение
А вот на счет слеша, не догнал куда его ставить?
PHP
1
header('Location: /'.$row['link']);
0
mat777
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 135
24.12.2016, 13:35  [ТС] #13
Просто перекидывает на главную, причем со всех страниц. Было что то похожее на переадресацию, когда ссылку полностью закинул в 'link' - но страница полностью пустая, и получилось только для этой страницы, остальные все на главную идут.
Кажется все должно быть просто и по логике все совпадает. Наверно что то мы упускаем. И да, благодарю что откликнулся, хоть понемногу с мёртвой точки сдвигаюсь)
0
miketomlin
Заблокирован
24.12.2016, 13:40 #14
Кэш браузера почистите и не выставляйте пока 301-статус.
0
Jodah
Эксперт PHP
2695 / 2367 / 845
Регистрация: 01.08.2012
Сообщений: 8,375
24.12.2016, 13:54 #15
mat777,
PHP
1
2
$link = '%D1%82%D0%B5%D0%BC%D0%B0-1-2016';
header('Location: /' . $link);
А так работает?

Кстати, судя по первому посту, в ссылке не хватает -1 (номер страницы), может так?
PHP
1
2
$link = '%D1%82%D0%B5%D0%BC%D0%B0-1-2016';
header('Location: /' . $link . '-1');
0
24.12.2016, 13:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2016, 13:54
Привет! Вот еще темы с ответами:

Как сделать редирект с несуществующих страниц - PHP
В общем сайт на инклюдах. На нескольких страницах есть ссылки на пока несуществующие страницы. Они будут, но через некторое время. Как...

Настроить 301 редирект - PHP
есть адрес http://site.ru/?&amp;getparam=1&amp;getparam=2 как редиректить с http://site.ru/?&amp;getparam=1&amp;getparam=2 на ...

301 редирект PHP с информацией из файла - PHP
Здравствуйте! Нужна ваша помощь. Есть .txt файл со следующей конструкцией (более 1к. строк): старый урл=&gt;новый урл Как осуществить...

Не могу правильно составить 301 редирект в htaccess - PHP
Добрый день! помогите пожалуйста нужно сделать 301 редирект с дурацкого урла , вот такого ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru