настройка редиректа ngnix
Всем привет! У меня на сервере под управлением ngnix перестал перевыпускаться SSL сертификат.
опытным путем установил что из-за строчки в правилах сервера:
опытным путем установил что из-за строчки в правилах сервера:
if ($request_uri !~* "(?:\?)|(?:\.\w+$)|(?:\/$)") {
return 301 $request_uri/;
}
Кто знает что она делает и почему не перевыпускаются сертификаты из-за нее? Комментарии: 4
Насколько я понимаю этот код делает редирект с алиаса без слеша на алис со слешем на конце.
Но только вот почему это мешает продлить SSL сертификат?
Удалите эту секцию. А редиректы через плагин сделайте. Я вечером за компом буду, скину код плагина.
Заходим в админке в раздел «Тип содержимого» и меняем
.html
на слэш /
Добавляем плагин и вешаем на событие OnHandleRequest:<?php
if ($modx->event->name != "OnHandleRequest" || $modx->context->key == 'mgr') {
return;
}
$uri = $_SERVER['REQUEST_URI'];
if (substr($uri, -1) != '/' && $uri != '/' && !strpos($uri, '?')&& !strpos($uri, '.')) {
$url = $modx->getOption('site_url');
if(substr($url, -1)=='/'){
$url=substr($url, 0, -1);
}
$url .= $uri.'/';
$modx->sendRedirect($url,array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
}
if ($_SERVER['REQUEST_URI'] != '/') {
$uri = strtok(substr($_SERVER['REQUEST_URI'], 1), '?');
if ($uri == 'index.php') {
$uri = intval(str_replace('/index.php?id=', '', $_SERVER['REQUEST_URI']));
//не уверен, нужна ли здесь проверка на наличие ресурса, т.к. в случае отсутствия оного, событие должно перехватить OnPageNotFound
if(empty($uri)) {
$url = 1;
}
$modx->sendRedirect($modx->makeUrl($uri));
}
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.