Ответы пользователя по тегу Nginx
  • Как оставить неизменным URL для 404 страницы в условиях MODx Evo, NGINX+phpFPM?

    Anton_from_Amber
    @Anton_from_Amber Автор вопроса
    Разобрался как это сделать. Оставлю для других страждущих.
    Решение далеко не элегантное, но вполне рабочее.

    Правим только модекс.
    В корень сайта (или куда вам будет удобно) размещаем текстовый документ, который будет выводится в ответ на ошибку. Я разместил в нём свои плейсхолдеры для последующей замены.
    Создаём плагин, смысл которого в перехватывании ошибки 404 и выводе статического фала в выдачу.

    Надо помнить, что через АПИ модекса нельзя просто так просчитать чанк, если в нём есть вызовы других чанков, сниппетов и плейсхолдеров. Однако при должном уровне детализации можно в коде плагина вызвать вставку статических чанков (к примеру подвал), результатов работы определённых сниппетов (к примеру меню или ленту новостей).

    В моём случае я имел пару статических чанков и плейсхолдер для искомой некорректной строки. В результате код плагина выглядит так:

    $basePath = $modx->config['base_path'];
    $e = &$modx->Event;
    
    switch ($e->name) {
    	case 'OnPageNotFound' : {
    		$out = file_get_contents("404.html");
    		$rpl = 'http://my.domain.ua'.$_SERVER["REQUEST_URI"];
    		$out = str_replace("{{ErrURL}}", $rpl, $out);
    		$rpl=$modx->getChunk('metro_mnd');
    		$out = str_replace("{{metro}}", $rpl, $out);
    		$rpl=$modx->getChunk('footer_mnd');
    		$out = str_replace("{{footer}}", $rpl, $out);
    		echo $out;
    		exit;
    	}
    }
    
    Ответ написан
    Комментировать