Просто, в документации не видел такие фишки.
.+?
?
переключает в ленивый режим и совпадение наименьшей длины.(?:...)
не сохраняют совпавший текст, а лишь группируют компоненты регулярных выражений в конструкции выбора.(?!...)
негативная опережающая проверка. RewriteRule ^$ https://sait.ru/index.shtml [R=301,L]
RewriteRule ^([^/]+)/$ https://sait.ru/$1/index.shtml [R=301,L]
PHP Warning: move_uploaded_file(): Unable to move '/tmp/phpAovX9o' to 'file/f/fuse3-3.9.3-r0.apk' in /var/www/html/domain.com/scripts/file.php on line 107
file/f/fuse3-3.9.3-r0.apk
не начинаетя с /
.location ~ ^/file/f(/[^/]+\.[^/]+)$ {
return 301 $1;
}
location ~ ^/file/f(/[^/]+)$ {
return 301 $1;
}
^/[^/]+\.[^/]+$
^/[^/]+$
location ~ ^/(?!index\.html)[^/]+$ {
root /var/www/html/domain.com/file/f;
}
location = /index.html {
}
server
указан root /var/www/html/domain.com;
location ~ /\.
и внутри deny
или return 403;
И ещё если запрашиваю так же существующий файл без расширения, выдаёт 404
Например https://domain.com/webmin-setup-repos
GET /img/i/kartinka.png HTTP/1.1
Host: domen.com
HTTP/1.1 301 Moved Permanently
Location: https://domen.com/kartinka.png
GET /kartinka.png HTTP/1.1
Host: domen.com
HTTP/1.1 200 OK
и передаёт содержимое нужного файла. location ~ ^/[^/]+\.(jpg|jpeg|gif|png|svg|bmp|tiff|tga|webp|ico)$ {
root /var/www/html/domain.com/img/i;
}
location ~ ^/img/i(/[^/]+\.(jpg|jpeg|gif|png|svg|bmp|tiff|tga|webp|ico))$ {
return 301 $1;
}
location ~ ^/[^/]+\.[^/]+$ {
root /var/www/html/domain.com/file/f;
}
location ~ ^/file/f(/[^/]+\.[^/]+)$ {
return 301 $1;
}
/var/www/html/domain.com/img/i/kartinka.png
/image.png
обрабатывается в location ~ ^/[^/]+\.(jpg|jpeg|gif|png|svg|bmp|tiff|tga|webp|ico)$ {
root /var/www/html/domain.com/img/i;
}
location ~ ^/[^/]+\.(jpg|jpeg|gif|png|svg|bmp|tiff|tga|webp|ico)$ {
return 301 $1;
}
location ~ ^/img/i(/[^/]+\.(jpg|jpeg|gif|png|svg|bmp|tiff|tga|webp|ico))$ {
return 301 $1;
}
location ~ ^/file/f(/[^/]+\.[^/]+)$ {
return 301 $1;
}
/
location ~ ^/[^/]+\.(jpg|jpeg|gif|png|svg|bmp|tiff|tga|webp|ico)$ {
root /var/www/html/domain.com/img/i;
}
location ~ ^/img/i(/[^/]+\.(jpg|jpeg|gif|png|svg|bmp|tiff|tga|webp|ico))$ {
return 301 $1;
}
location ~ ^/[^/]+\.[^/]+$ {
root /var/www/html/domain.com/file/f;
}
location ~ ^/file/f(/[^/]+\.[^/]+)$ {
return 301 $1;
}
location ~ ^/[^/]+\.(png|jpg|gif)$ {
root /var/www/img/i;
}
location ~ ^/[^/]+\.[^/]+$ {
root /var/www/file/f;
}
просто чтобы любое просто указать, по типу "*"
В памяти хранится состояние для разных значений ключа.
Состояние в частности хранит текущее число избыточных запросов.
Когда в качестве ключа используется IP-адрес клиента, то для каждого будет свой уникальный ключ и свой счётчик запросов т.е. каждый клиент сможет 10r/s.
Когда в качестве ключа "1" для всех клиентов с "zh", то счётчик будет один на всех т.е. 10r/s это суммарно на всех клиентов с "zh".