akill, такое бывает если ставить редирект после правил для ЧПУ. Так что редирект нужно ставить выше остальных правил, чтобы он срабатывал до того как другие правила поменяют запрос на /index.php?cat=
При поиске виртуального сервера по имени, если имени соответствует несколько из указанных вариантов, например, одновременно подходят и имя с маской, и регулярное выражение, будет выбран первый подходящий вариант в следующем порядке приоритета:
1. точное имя
2. самое длинное имя с маской в начале, например “*.example.com”
3. самое длинное имя с маской в конце, например “mail.*”
4. первое подходящее регулярное выражение (в порядке следования в конфигурационном файле)
server {
listen 80;
server_name "~^www\.(?<domain>.+)";
return 301 http://$domain$request_uri;
}
server {
listen 80;
server_name "~(?:^|\.)site\.ru$";
akill, такое бывает если ставить редирект после правил для ЧПУ. Так что редирект нужно ставить выше остальных правил, чтобы он срабатывал до того как другие правила поменяют запрос на /index.php?cat=
Ставить выше правила RewriteRule ^index\.php$ - [L]
Vitaly2012, там требуется как минимум Visual C++ Redistributable for Visual Studio 2015
vcruntime140d.dll
ucrtbased.dll
$content=preg_replace('#<h2.*?\K<h2#s','<p style="text-align: center;">'.$ads.'</p><h2',$content,1);Для домен.укр нужен punycode. Будет что-то вроде xn--d1acufc.xn--j1amh.
server {
listen 80;
server_name "~^www\.(.*)$";
rewrite ^ http://$host$request_uri permanent;
}
server {
listen 80;
server_name site.ru *.site.ru;
Приоритет маски "*.site.ru" выше чем у регулярки http://nginx.org/ru/docs/http/ngx_http_core_module.html#server_name
При поиске виртуального сервера по имени, если имени соответствует несколько из указанных вариантов, например, одновременно подходят и имя с маской, и регулярное выражение, будет выбран первый подходящий вариант в следующем порядке приоритета:
1. точное имя
2. самое длинное имя с маской в начале, например “*.example.com”
3. самое длинное имя с маской в конце, например “mail.*”
4. первое подходящее регулярное выражение (в порядке следования в конфигурационном файле)
Или писать полный список поддоменов.
RewriteRule ^$ /index.php [R=301,L,QSA]
Поменять на такой:
RewriteCond %{QUERY_STRING} ^co=
RewriteRule ^$ /index.php [R=301,L]
RewriteCond %{QUERY_STRING} ^ch=
RewriteRule ^$ /channel.php [R=301,L]
Получилось наоборот - у /index.html обрезает .html а у записей /статья.html оставляет
Поставить редирект выше остальных правил и добавить RewriteCond %{ENV:REDIRECT_STATUS} ^$
Ну или проверять %{THE_REQUEST}
RewriteCond %{THE_REQUEST} " ((?>[^ ?]*/)(?!index\.html)[^ ?]+)\.html"RewriteRule \.html$ %1 [R=301,L]
RewriteCond %{REQUEST_URI} !/index\.html$RewriteRule ^(.*)\.html$ /$1 [R=301,L]
Или