jkm

Рейтинг
120
Регистрация
20.02.2014

akill, такое бывает если ставить редирект после правил для ЧПУ. Так что редирект нужно ставить выше остальных правил, чтобы он срабатывал до того как другие правила поменяют запрос на /index.php?cat=

RewriteRule ^services/kompleksnoe_proektirovanie/$ https://site.com/concurrent-engineering [R=301,L]

RewriteRule ^services/kompleksnoe_proektirovanie/OVOS/ https://site.com/concurrent-engineering/ovos [R=301,L]
RewriteRule ^services/ekologicheskoe_proektirovanie/ekologicheskoe_proektirovanie/dlya_deystvuyushchikh_pedpriyatiy/dogovor_vodopolzovaniya\.html$ https://site.com/environmental-consulting/water-use-agreement [R=301,L]

Ставить выше правила 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);


map $uri?$args $my_expires {
default 30d;
~\?nocache$ epoch;
~^/download/cache/ 1h;
}

server {
location ~ ^/download/ {
expires $my_expires;
}

Для домен.укр нужен punycode. Будет что-то вроде xn--d1acufc.xn--j1amh.


RewriteEngine On
Options +FollowSymlinks

RewriteCond %{HTTP_HOST} ^(www\.|)xn--d1acufc\.xn--j1amh$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

RewriteRule ^category/(.*) /cat.php?name=$1 [L,QSA]
SateClub:

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. первое подходящее регулярное выражение (в порядке следования в конфигурационном файле)


server {
listen 80;
server_name "~^www\.(?<domain>.+)";
return 301 http://$domain$request_uri;
}

server {
listen 80;
server_name "~(?:^|\.)site\.ru$";

Или писать полный список поддоменов.


map $host $domain {
~*^www\.(.+) $1;
}

server {
listen 80;
server_name www.site.ru www.sub1.site.ru www.sub2.site.ru www.sub3.site.ru;
return 301 http://$domain$request_uri;
}

server {
listen 80;
server_name site.ru *.site.ru;

RewriteCond %{QUERY_STRING} ^.+
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]
Эдуардoff:
Получилось наоборот - у /index.html обрезает .html а у записей /статья.html оставляет

Поставить редирект выше остальных правил и добавить RewriteCond %{ENV:REDIRECT_STATUS} ^$


RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_URI} !/index\.html$
RewriteRule ^(.*)\.html$ /$1 [R=301,L]

Ну или проверять %{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]

Или

RewriteCond /$1 !/index$

RewriteRule ^(.*)\.html$ /$1 [R=301,L]
Всего: 750