Я создал новый веб-сайт, используя Grav.
На старом сайте есть страницы, к которым нужно было обращаться, используя URL-адреса, заканчивающиеся на .php
URL /somefolder/somepage.php просто дает мне «Файл не найден».
Это НЕ приводит меня к встроенной странице ошибки Grav.
Я отключил плагин ошибок Grav, чтобы он не мешал.
Как мне переписать /somefolder/somepage.php в / somefolder / somepage
Кроме того, как я могу перенаправить любая ошибка 404 на главную страницу?
Ошибка обрабатывается:
/var/www/grav-admin/system/src/Grav/Common/Processors/PagesProcessor.php
if (!$page->routable()) {
// If no page found, fire event
$event = $this->container->fireEvent('onPageNotFound');
if (isset($event->page)) {
unset ($this->container['page']);
$this->container['page'] = $event->page;
} else {
throw new \RuntimeException('Page Not Found', 404);
}
}
Как я могу заменить строку «throw new \ RuntimeException (‘Page Not Found’, 404);» с инструкцией по перенаправлению на домашнюю страницу?
Вышеуказанная ошибка ловится только для URL НЕ заканчивается в .php
URL-адреса, оканчивающиеся на .php, не обрабатываются Grav, поэтому я полагаю, что именно веб-сервер обрабатывает эти ошибки. Веб-сервер nginx / 1.11.9.
Я попытался добавить строки ниже в мой nginx.conf, но это не решило проблему.
error_page 404 = @foobar;
location @foobar {
rewrite .* / permanent;
}
Я бы справился с обеими вашими проблемами на стороне сервера.
Как мне переписать /somefolder/somepage.php в / somefolder / somepage
Я хотел бы сделать что-то вроде:
location ~ \.php$ {
if (!-f $request_filename) {
rewrite ^(.*)\.php$ $1.html permanent;
}
}
Что означает: для каждого запрошенного php-файла удалите php и замените .php на .html.
Кроме того, как я могу перенаправить любую ошибку 404 на домашнюю страницу?
Эта проблема может возникнуть из-за 2 общих вещей:
fastcgi_intercept_errors on;
Для этой проблемы я бы использовал этот кусок кода:
server {
...
index index.html index.php
error_page 404 = @hpredirect;
...
location @hpredirect {
return 301 /;
}
}
Надеюсь, поможет !
Других решений пока нет …