Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Не работает 301 редирект
Форумы портала PHP.SU » PHP » Программирование на PHP » Не работает 301 редирект

Страниц (1): [1]
 

1. dmaw - 24 Марта, 2015 - 12:29:07 - перейти к сообщению
Здравствуйте!

Сделал в php-скрипте редирект:

PHP:
скопировать код в буфер обмена
  1. header('HTTP/1.1 301 Moved Permanently');
  2. header('Location: /page5');


В браузере меня отлично редиректит, а вот заголовок отдает 200 Ок

Если писать в htaccess, то с заголовками всё отлично:

redirect 301 /page4 /page5

Проблема в том, что страниц для редиректа дохрена и прописывать вручную не вариант.
Не понимаю почему сервер не отдаёт 301 редирект через php?
2. Ch_chov - 24 Марта, 2015 - 13:00:30 - перейти к сообщению
200 наверно для page5 страницы.
3. armancho7777777 - 24 Марта, 2015 - 14:02:56 - перейти к сообщению
4. dmaw - 24 Марта, 2015 - 20:05:31 - перейти к сообщению
armancho7777777 пишет:
header('Location: /page5', true, 301);

Не помогло.
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. Редирект отсутствует
  3. Полный ответ сервера по запрашиваемому адресу:
  4. (
  5.     [0] => HTTP/1.1 200 OK
  6.     [Server] => nginx/1.4.4
  7.     [Date] => Tue, 24 Mar 2015 18:02:12 GMT
  8.     [Content-Type] => text/html; charset=UTF-8
  9.     [Connection] => close
  10.     [X-Powered-By] => PHP/5.2.17
  11.     [Expires] => Thu, 19 Nov 1981 08:52:00 GMT
  12.     [Cache-Control] => no-store, no-cache, must-revalidate, post-check=0, pre-check=0
  13.     [Pragma] => no-cache
  14.     [Set-Cookie] => PHPSESSID=71eljgmasv01sa7qkbbt8uvi97; path=/
  15.     [Vary] => Accept-Encoding,User-Agent
  16. )

Если прописать редирект в htaccess, то получаю такой ответ:
CODE (htmlphp):
скопировать код в буфер обмена
  1. 301 редирект (перемещено постоянно) на адрес
  2. http://site.ru/page5
  3.  
  4. Полный ответ сервера по запрашиваемому адресу:
  5. (
  6.     [0] => HTTP/1.1 301 Moved Permanently
  7.     [Server] => Array
  8.         (
  9.             [0] => nginx/1.4.4
  10.             [1] => nginx/1.4.4
  11.         )
  12.  
  13.     [Date] => Array
  14.         (
  15.             [0] => Tue, 24 Mar 2015 18:03:17 GMT
  16.             [1] => Tue, 24 Mar 2015 18:03:17 GMT
  17.         )
  18.  
  19.     [Content-Type] => Array
  20.         (
  21.             [0] => text/html; charset=iso-8859-1
  22.             [1] => text/html; charset=UTF-8
  23.         )
  24.  
  25.     [Content-Length] => 250
  26.     [Connection] => Array
  27.         (
  28.             [0] => close
  29.             [1] => close
  30.         )
  31.  
  32.     [Location] => http://site.ru/page5
  33.     [1] => HTTP/1.1 200 OK
  34.     [X-Powered-By] => PHP/5.2.17
  35.     [Expires] => Thu, 19 Nov 1981 08:52:00 GMT
  36.     [Cache-Control] => no-store, no-cache, must-revalidate, post-check=0, pre-check=0
  37.     [Pragma] => no-cache
  38.     [Set-Cookie] => PHPSESSID=33csinfimlcjbhdtni13ccvco2; path=/
  39.     [Vary] => Accept-Encoding,User-Agent
  40. )
5. armancho7777777 - 25 Марта, 2015 - 10:01:13 - перейти к сообщению
dmaw,Вы чего хотите-то ?
Какая страница перемещена, и на какую ?
Страница '/page5' перемещена на '/page6',
то на странице '/page5' редирект на '/page6' со статусом 301.
Всё. У "/page6" будет статус 200.
(Добавление)
dmaw пишет:
PHP:
скопировать код в буфер обмена
  1. [Location] => http://site.ru/page5
  2.     [1] => HTTP/1.1 200 OK
6. dmaw - 25 Марта, 2015 - 12:12:20 - перейти к сообщению
На странице /page4 пишу php-редирект на страницу /page5 и проверяю ответ сервера, получаю 200.
PHP:
скопировать код в буфер обмена
  1. header('HTTP/1.1 301 Moved Permanently');
  2. header('Location: /page5');


На странице /page4 пишу php-редирект на страницу /page5 вот так:
PHP:
скопировать код в буфер обмена
  1. header('Location: /page5');

и в htaccess пишу:
CODE (htmlphp):
скопировать код в буфер обмена
  1. redirect 301 /page4 /page5

проверяю ответ сервера, получаю 301.

P.S. В htaccess есть другие строки, может быть они влияют на настройки сервера из-за чего php-редирект не отдаёт 301?
7. DeepVarvar - 25 Марта, 2015 - 13:19:58 - перейти к сообщению
dmaw пишет:
и в htaccess пишу
Пиши в одном только месте, или там или там.
(Добавление)
dmaw пишет:
проверяю ответ сервера, получаю 200.
Как ты его проверяешь? Там два запроса должны быть. Первый запрос получает 301 и локейшн, второй уже 200 с той страницы куда его отпнули.
8. dmaw - 25 Марта, 2015 - 18:35:41 - перейти к сообщению
Проверяю этим сервисом или любым другим из поиска по запросу "проверить 301 редирект".
9. Ts.Saltan - 25 Марта, 2015 - 19:04:52 - перейти к сообщению
dmaw пишет:
Проверяю этим сервисом или любым другим из поиска по запросу "проверить 301 редирект".

Все современные браузеры умеют "сниффить" трафик через панель инструментов (в chromium вкладка network в веб-инспекторе). Там видно полностью всё "общение" между клиентом и сервером, в т.ч. коды, ошибки и т.д.
(Добавление)
ИМХО, я б не доверял таким сервисам, тем более, если разработка ведётся на localhost'e, они ну никак не помогут.
10. dmaw - 25 Марта, 2015 - 19:16:27 - перейти к сообщению
Ts.Saltan, спасибо! Хром действительно показал, что там 301, а все сервисы показывают 200.

 

Powered by ExBB FM 1.0 RC1