Всем привет!
Бьюсь не первый день, но никак не могу найти проблему.
Стоит J4.1.2 + SP Page Builder Pro 3.7.15.
Созданы страницы в PB, в меню назначена в качестве главной одна из страниц PB.
Создана 404 страница, в меню также она есть.
В error.php в шаблоне указана ссылка на нее. Собственно, содержимое его:
<?php
defined('_JEXEC') or die;
if (($this->error->getCode()) == '404') {
header("HTTP/1.0 404 Not Found");
$url=JURI::root()."index.php?option=com_sppagebuilder&view=page&id=109";
$data = file_get_contents($url) or die("Cannot open URL");
echo $data;
exit;
}
Теперь собственно проблема. При переходе на сайт по example.com/aaa.php, example.com/aaa.html - страница 404 корректно отображается.
Если сделать запрос example.com/aaa, то переходит на главную.
Если создать обычный материал Joomla и назначить его Главной, то все начинает корректно работать. Как временное решение, в nginx сделал 301 редирект:
location = / {
return 301 /home;
}
Но это скорее костыль, чем решение.
Как быть ? Где проблема??
Конфиг nginx прилагаю:
server {
listen 443 ssl;
server_name example.com www.example.com;
root /var/www/example.com;
index index.php;
access_log /var/www/example.com/administrator/logs/nginx/access.log;
#Сертификаты
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# Размер буфера заголовка
client_body_buffer_size 32k;
client_header_buffer_size 8k;
large_client_header_buffers 8 64k;
# Add_header Access-Control-Allow-Origin *; serve static files directly
location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ {
access_log off;
expires max;
log_not_found off;
}
#Страница ошибки 404
error_page 404 /index.php?option=com_sppagebuilder&view=page&id=109;
#Временно 301
location = / {
return 301 /live;
}
#SEF для Joomla
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~* \.php$ {
try_files $uri = 404;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
include /etc/nginx/conf.d/php_php-fpm.conf;
}
location ~ /\.ht {
deny all;
}
}
# Редирект с http на https
server {
if ($host = example.com) {
return 301 https://example.com$request_uri;
}
if ($host = www.example.com) {
return 301 https://example.com$request_uri;
}
listen 80;
server_name example.com www.example.com;
return 404;
}
Буду рад любому совету!