Не перенаправляет на страницу 404 на Android устройстве
15.05.2024 06:21:54 pm
Сегодня заметил, что перейдя по прямой ссылке на фотографию, которой не существует, на Android устройстве, страница
Пример:
На ПК открывается страница движка 404 ошибке, на мобильных устройствах нет...
Удалось выяснить, что ноги растут из данного метода:
Строка
error.404
, что заданна движком, не будет загружена...Пример:
https://danfa.net/file/pic/photo/2024/04/15/06b5e25300005ba0567d4e167_500.jpg
На ПК открывается страница движка 404 ошибке, на мобильных устройствах нет...
Удалось выяснить, что ноги растут из данного метода:
public function isMobile($redirect = true)
{
static $firstCheck = false;
$url = phpfox::getLib('url');
if ($firstCheck === false && !$url->isMobile() && !phpfox::getLib('session')->get('mobilestatus'))
{
$firstCheck = true;
$this->getBrowser();
if ($this->mobile === true && !PHPFOX_IS_AJAX)
{
if ($this->get('req1') == 'user' && $this->get('req2') == 'verify' && $this->get('link'))
{
$url->send('mobile.user.verify', ['link' => $this->get('link')]);
}
$sendWhere = 'mobile';
if (phpfox::getParam('core.redirect_guest_on_same_page'))
{
$sendWhere = $url->getFullUrl(true);
$sendWhere = 'mobile' . str_replace('/', '.', $sendWhere);
}
if ($redirect && !empty($sendWhere))
{
$url->send($sendWhere);
}
else
{
return true;
}
}
}
return $url->isMobile();
}
Строка
$url->send($sendWhere);
виной всему... Думаю, как поправить.- Жалоба
29.05.2024 07:44:19 pm
Чуток исправил метод, убрал то, что мне не надо:
В конфигурацию Nginx добавил (В:
И исправил
Перечитал конфиг Nginx (Команда:
public function isMobile($redirect = true)
{
static $check = false;
$url = phpfox::getLib('url');
if ($check === false && !$url->isMobile() && !phpfox::getLib('session')->get('mobile'))
{
$check = true;
$this->getBrowser();
if ($this->mobile === true && !PHPFOX_IS_AJAX)
{
if ($this->get('req1') == 'user' && $this->get('req2') == 'verify' && $this->get('link'))
{
$url->send('mobile.user.verify', ['link' => $this->get('link')]);
}
if ($redirect)
{
$sendWhere = $url->getFullUrl(true);
$sendWhere = 'mobile' . str_replace('/', '.', $sendWhere);
$url->send($sendWhere);
}
else
{
return true;
}
}
}
return $url->isMobile();
}
В конфигурацию Nginx добавил (В:
http
): map $http_user_agent $page_error {
"~*(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino" "/mobile/error/404/";
default "/error/404/";
}
И исправил
error_page
(В: server
): error_page 404 $page_error;
Перечитал конфиг Nginx (Команда:
nginx -s reload
). Теперь страницы 404 ошибки открываются, как я задумал, страницы движка, на ПК - полная версия, на мобильных устройствах - мобильная версия.