Перейти к публикации

Правила Rewrite для Nginx


Рекомендованные сообщения

Добрый день всем форумчанам.

Вопрос родился из этой статьи https://dle-news.ru/tips/page,1,4,770-pravila-rewrite-dlya-podderzhki-chpu-na-serverax.html#comment

Celsoft по каким-то причинам не отвечает в комментах, возможно ответит здесь. Или ответят форумчане.

Есть общие правила для Апача, на указанной выше странице есть правила для Nginx. И они различаются.

Речь идет о DataLife Engine 13.3

Строка 20 главного файла .htaccess:

RewriteRule ^([0-9]+)-(.*).html$ index.php?newsid=$1&seourl=$2 [L]

Эта же, 18 строка, из файла nginx rewrite rules.txt:

rewrite "^/([0-9]+)-(.*).html(/?)+$" /index.php?newsid=$1&seourl=$2 last;

Различие - вот в этой части: (/?)+

Что она дает? Все перечисленные ниже ссылки для Nginx:

/razdel/1-nazvanie-stati.html
/razdel/1-nazvanie-stati.html/
/razdel/1-nazvanie-stati.html//
/razdel/1-nazvanie-stati.html///

Попадают под регулярку:

^/([0-9]+)-(.*).html(/?)+$

Для файла .htaccess этого "хвоста" нет.

Вопрос - зачем нужна часть (/?)+ для правил Nginx?

Этот хвост (/?)+ в регулярке используется по всему файлу nginx rewrite rules.txt - он нужен или нет везде?

Дальше. Последние строки .htaccess:

RewriteRule ^([^/]+).html$ index.php?do=static&page=$1&seourl=$1 [L]
RewriteRule ^page,([0-9]+),([^/]+).html$ index.php?do=static&page=$2&news_page=$1&seourl=$2 [L]
RewriteRule ^print:([^/]+).html$ index.php?mod=print&do=static&page=$1&seourl=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+).html$ index.php?do=static&page=$1&seourl=$1 [L]

И эти же строки из nginx rewrite rules.txt:

        rewrite "^/page,([0-9]+),([^/]+).html$" /index.php?do=static&page=$2&news_page=$1 last;
        rewrite "^/print:([^/]+).html$" /index.php?mod=print&do=static&page=$1 last;
}

if (!-f $request_filename) {
        rewrite "^/([^/]+).html$" /index.php?do=static&page=$1 last;
}

В них отсутствует &seourl=...

Вопрос - для Nginx правки seourl не работают или это ошибка?

Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, Alex-GR сказал:

Celsoft по каким-то причинам не отвечает в комментах, возможно ответит здесь

Это сторонний модуль, находится в разделе сторонних модулей, который нам прислал обычный сторонний автор. Никакой официальной у него поддержки нет. Поэтому и спрашивать о нем у меня не имеет никакого смысла. Я занимаюсь только официальной технической поддержкой, а официальные минимальные требования опубликованы на странице https://dle-news.ru/request.html

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, celsoft сказал:

Это сторонний модуль, находится в разделе сторонних модулей, который нам прислал обычный сторонний автор. Никакой официальной у него поддержки нет. Поэтому и спрашивать о нем у меня не имеет никакого смысла. Я занимаюсь только официальной технической поддержкой, а официальные минимальные требования опубликованы на странице https://dle-news.ru/request.html

Если посмотреть комментарии в статье сторонних модулей https://dle-news.ru/tips/page,1,4,770-pravila-rewrite-dlya-podderzhki-chpu-na-serverax.html#comment

то там вы отвечали неоднократно. Что изменилось?

Могли бы и ответить - думаю, вам это не составит труда. Но на нет - и суда нет...

Ссылка на сообщение
Поделиться на других сайтах

@Alex-GR 

1. Не нужна приставка (/?)+, это ошибка, только в некоторых правилах: категории, доп поля, теги, каталог, последние новости, юзеры.

2. seourl= нужен для опции обработки неверных чпу статических страниц. Так что да, это тоже как бы ошибка.

Ссылка на сообщение
Поделиться на других сайтах
11 часов назад, Alex-GR сказал:

Если посмотреть комментарии в статье сторонних модулей https://dle-news.ru/tips/page,1,4,770-pravila-rewrite-dlya-podderzhki-chpu-na-serverax.html#comment

то там вы отвечали неоднократно. Что изменилось?

Я даю только комментарии относительно того есть изменения или нет. Но я их даю только основываясь на том, были ли изменения в .htaccess если их не было, то и в этих правилах изменений делать не нужно. Вот и все. А анализов самих правил я не проводил.

Ссылка на сообщение
Поделиться на других сайтах
  • 3 месяца спустя...

Коллеги, подскажите, как сделать переадресацию в nginx c www на домен без www. Спасибо заранее!

 

Вот наши настройки, что туда добавить?

 

server {

                server_name ntr-24.ru www.ntr-24.ru;

                charset UTF-8;

                disable_symlinks if_not_owner from=$root_path;

                root $root_path;

                set $root_path /.........../ntr-24.ru;

                error_log /............../ntr-24.ru.error.log notice;

                include /e......ncludes/*.conf;

                include /et.......s/ntr-24.ru/*.conf;

                location / {

                               location ~ [^/]\.ph(p\d*|tml)$ {

                                               try_files /does_not_exists @fallback;

                               }

                               location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {

                                               expires 10d;

                                               try_files $uri $uri/ @fallback;

                               }

                               location / {

                                               try_files /does_not_exists @fallback;

                               }

                }

Изменено пользователем ntrtv
Ссылка на сообщение
Поделиться на других сайтах
В 13.01.2020 в 15:46, ntrtv сказал:

Коллеги, подскажите, как сделать переадресацию в nginx c www на домен без www. Спасибо заранее!

 

Вот наши настройки, что туда добавить?

 

server {

                server_name ntr-24.ru www.ntr-24.ru;

                charset UTF-8;

                disable_symlinks if_not_owner from=$root_path;

                root $root_path;

                set $root_path /.........../ntr-24.ru;

                error_log /............../ntr-24.ru.error.log notice;

                include /e......ncludes/*.conf;

                include /et.......s/ntr-24.ru/*.conf;

                location / {

                               location ~ [^/]\.ph(p\d*|tml)$ {

                                               try_files /does_not_exists @fallback;

                               }

                               location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {

                                               expires 10d;

                                               try_files $uri $uri/ @fallback;

                               }

                               location / {

                                               try_files /does_not_exists @fallback;

                               }

                }

Вы же ЗП получаете в должности администратора этого СМИ, неужели не умеете таких простых вещей?
Дока по nginx не вариант я так понимаю?

Ссылка на сообщение
Поделиться на других сайтах
5 часов назад, mr. Freeman сказал:

Вы же ЗП получаете в должности администратора этого СМИ, неужели не умеете таких простых вещей?
Дока по nginx не вариант я так понимаю?

А по существу?

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, ntrtv сказал:

А по существу?

Не спорь со флудером. 

Ссылка на сообщение
Поделиться на других сайтах
21 час назад, ntrtv сказал:

А по существу?

По существу "специалист" говорит работодателю какой он крутой специалист, но при этом не умеет даже пользоваться РУССКОЯЗЫЧНОЙ документацией по nginx, и просит помощи на форуме DLE. Это как бы немного смех вызывает.
Для профессионалов дам две ссылки:
http://nginx.org/ru/docs/http/ngx_http_core_module.html#var_host
http://nginx.org/ru/docs/http/ngx_http_core_module.html#var_server_name

Про конструкции if else и т.д. мануал тоже нужен?

20 часов назад, alex32 сказал:

Не спорь со флудером. 

Не перестарайтесь, а то у вас там соревнование с двумя другими я смотрю.

Ссылка на сообщение
Поделиться на других сайтах
В 16.01.2020 в 05:01, mr. Freeman сказал:

По существу "специалист" говорит работодателю какой он крутой специалист, но при этом не умеет даже пользоваться РУССКОЯЗЫЧНОЙ документацией по nginx, и просит помощи на форуме DLE. Это как бы немного смех вызывает.
Для профессионалов дам две ссылки:
http://nginx.org/ru/docs/http/ngx_http_core_module.html#var_host
http://nginx.org/ru/docs/http/ngx_http_core_module.html#var_server_name

Про конструкции if else и т.д. мануал тоже нужен?

Не перестарайтесь, а то у вас там соревнование с двумя другими я смотрю.

Я не программист. Я журналист. Так получилось, что приходится следить и за технической частью. 

Ссылка на сообщение
Поделиться на других сайтах
5 часов назад, ntrtv сказал:

Я не программист. Я журналист. Так получилось, что приходится следить и за технической частью. 

У целого холдинга нет денег на технических специалистов? Что то сомнительно.
По сути я вам дал уже подсказку что и как, но если уж совсем не вмоготу, то вот:
 

if ($host != $server_name) {
	return 301 $scheme://$server_name$request_uri;
}

Данное правило всегда будет переадресовывать с ЛЮБОГО алиаса на основной домен сайта.

Изменено пользователем mr. Freeman
Ссылка на сообщение
Поделиться на других сайтах
В 18.01.2020 в 04:39, mr. Freeman сказал:

У целого холдинга нет денег на технических специалистов? Что то сомнительно.
По сути я вам дал уже подсказку что и как, но если уж совсем не вмоготу, то вот:
 


if ($host != $server_name) {
	return 301 $scheme://$server_name$request_uri;
}

Данное правило всегда будет переадресовывать с ЛЮБОГО алиаса на основной домен сайта.

спасибо!

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...