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 :: Версия для печати :: сайт выдает ошибку 302, а должно быть 301
Форумы портала PHP.SU » » Вопросы новичков » сайт выдает ошибку 302, а должно быть 301

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

1. DlTA - 22 Апреля, 2019 - 17:10:47 - перейти к сообщению
у меня сайт при некоторых запросах выдает ошибку 302,
где он это делает не знаю
перерыл все header (если в header в третьем параметре не указана код то идет по 302)
но не помогло

возможно где то в .htaccess есть пересылка, то я ее не вижу
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteEngine On
  2. RewriteCond %{REQUEST_FILENAME} !-f
  3. RewriteCond %{REQUEST_FILENAME} !-d
  4. RewriteRule ^(.+)? ./index.php [L]


как проверить где у меня выдается 302?
2. andrewkard - 22 Апреля, 2019 - 17:53:35 - перейти к сообщению
DlTA пишет:
как проверить где у меня выдается 302?

может парсер написать и пробежаться по страницам?
(Добавление)
Посмотреть логи, для nginx тут
/var/log/nginx/access.log
3. DlTA - 22 Апреля, 2019 - 17:59:09 - перейти к сообщению
нашел,
на странице выдается
PHP:
скопировать код в буфер обмена
  1.  
  2. $headerData []= 'HTTP/1.0 404 Not Found';
  3. $headerData []= 'Location: /';
  4. ...
  5. header($headerData[0]);
  6. ..
  7.  


так вот заголовок HTTP/1.0 404 Not Found
не обрабатывается, и мы получаем 302 статус
4. Мелкий - 22 Апреля, 2019 - 18:05:01 - перейти к сообщению
Если вы пытаетесь выдать И 404 И location:

Цитата:
The second special case is the "Location:" header. Not only does it send this header back to the browser, but it also returns a REDIRECT (302) status code to the browser unless the 201 or a 3xx status code has already been set.

https://www.php.net/manual/en/fu...ction.header.php

Ну и в принципе для 404 не предполагается Location.
5. DlTA - 22 Апреля, 2019 - 18:11:52 - перейти к сообщению
а что делать если нечего выдавать? поэтому делаешь статус 404 с переходом на главную

6. andrewkard - 22 Апреля, 2019 - 18:16:45 - перейти к сообщению
DlTA пишет:
а что делать если нечего выдавать?

по идее должна быть страница 404 не найдено и на нее
7. DlTA - 22 Апреля, 2019 - 18:18:10 - перейти к сообщению
опять косяк
header('Location: /', true, 404)
не перезагружается выдает ошибку и все.
8. andrewkard - 22 Апреля, 2019 - 18:18:31 - перейти к сообщению
А
$headerData[0] == 'HTTP/1.0 404 Not Found'
?
9. DlTA - 22 Апреля, 2019 - 18:22:52 - перейти к сообщению
andrewkard пишет:
А
$headerData[0] == 'HTTP/1.0 404 Not Found'
?

да
10. andrewkard - 22 Апреля, 2019 - 18:32:34 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. header("HTTP/1.0 404 Not Found");
  3. echo "<script>window.location = '/';</script>";exit();
  4.  

Улыбка))
11. Мелкий - 22 Апреля, 2019 - 18:34:49 - перейти к сообщению
DlTA пишет:
а что делать если нечего выдавать?

Ответить, что такого нет.

DlTA пишет:
с переходом на главную

Нет. Это дурацкое поведение. Зачем мне главная?

DlTA пишет:
не перезагружается выдает ошибку и все.

см
Мелкий пишет:
Ну и в принципе для 404 не предполагается Location.

Для 301/302 в rfc написано: см. заголовок Location
Для 404 это один из множества заголовков ответа. Ничего с ним делать не предписано, зато предписано что клиент не должен реагировать на дополнительные заголовки, которые клиент не считает неободимыми.
12. DlTA - 22 Апреля, 2019 - 18:49:38 - перейти к сообщению
оно иначе не работает.
для 404 нужен контент(
13. Мелкий - 22 Апреля, 2019 - 21:19:48 - перейти к сообщению
И какая проблема отдать статичную страницу 404? Вам всё равно нужна статичная страница для 5хх ошибок. Сделайте в этом же стиле для 404.

 

Powered by ExBB FM 1.0 RC1