RewriteEngine On
RewriteRule ^katalog/$ https://sait.ru/katalog/index.shtml [R=301,L]
RewriteEngine On
RewriteRule ^$ https://sait.ru/index.shtml [R=301,L]
RewriteRule ^(.+)/$ https://sait.ru/$1/index.shtml [R=301,L]
## Обработка 404 для изображений (если файла нет, отдаём заглушку)
location ~ ^/[^/]+\.(jpg|jpeg|jpe|jif|jfif|png|bmp|gif|tiff|tif|webp|heic|heif|avif|svg|ico)$ {
root /var/www/html/domain.com/img/i;
try_files $uri /res/imgs/errors/404_fallback.png;
}
## Обработка 404 для изображений (если файла нет, отдаём заглушку)
location ~ ^/[^/]+\.(jpg|jpeg|jpe|jif|jfif|png|bmp|gif|tiff|tif|webp|heic|heif|avif|svg|ico)$ {
root /var/www/html/domain.com/img/i;
try_files $uri /fd$uri /res/imgs/errors/404_fallback.png;
}
location ~ ^/img/i(/[^/]+\.(jpg|jpeg|jpe|jif|jfif|png|bmp|gif|tiff|tif|webp|heic|heif|avif|svg|ico))$ {
return 301 https://$host$1;
}
location ~ ^/img/i(?:/fd)?(/[^/]+\.(jpg|jpeg|jpe|jif|jfif|png|bmp|gif|tiff|tif|webp|heic|heif|avif|svg|ico))$ {
return 301 https://$host$1;
}
\G
в PHP и Ruby соответствует началу текущего совпадения, а в Perl. java.util.regex и языках .NET – концу предыдущего совпадения.A=1:2:3 B=1:2:3 A=1:2:3:4:5 B=1:2:3
((?:A=|\G)\d):
$1.
A=1.2.3 B=1:2:3 A=1.2.3.4.5 B=1:2:3
\G
подробнее в книге Джеффри Фридла "Регулярные выражения". location ~ ^/phpmyadmin/(.+\.php)$ {
root /usr/share/phpmyadmin;
location ~ ^/phpmyadmin/(.+\.php)$ {
root /usr/share;
/image1.png
отдать файл /img/i/image1.png
.location ~ ^/[^/]+\.png$ {
root /var/www/img/i;
}
location ~ ^/[^/]+\.(?:dll|zip)$ {
root /var/www/file/f;
}
/img/i/image1.png
на /image1.png
нужен редирект с кодом 301.location ~ ^/img/i(/[^/]+\.png)$ {
return 301 $1;
}
location ~ ^/file/f(/[^/]+\.(?:dll|zip))$ {
return 301 $1;
}
/
, то это обращение к существующей папке (корневой каталог сайта).RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[^./]+)$
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule (.*)/ /$1.html
RewriteCond %{DOCUMENT_ROOT}/$1.html -f
RewriteRule ^(.+)/$ /$1.html [L]
if
исполняется только содержимое блока if.add_header
.try_files
не наследуется и исполняется только когда уловие if
ложно.location
.if
в контексте server
таких проблем нет.if
на уровень server
и всё заработает как ожидалось.server {
set $avif_image_path "";
if ($http_accept ~* "image/avif") {
set $avif_image_path "$uri.avif";
}
set $webp_image_path "";
if ($http_accept ~* "image/webp") {
set $webp_image_path "$uri.webp";
}
location ~* \.(png|jpe?g|gif)$ {
add_header Vary Accept;
try_files $avif_image_path $webp_image_path $uri =404;
}
if
и переписать на map
. "text":"Статус"
"text":"\nСтатус"
{"guid":"9851f763-51ec-4f18-9f6c-1...
Статус"},"originalText":"Inventory...
Статус"},"text":"AT-AT"},{"guid":"...
Статус"},{"guid":"5340ae58-20d8-43...
{"guid":"9851f763-51ec-4f18-9f6c-1...
1 Статус"},"originalText":"Inventory...
2 Статус"},"text":"AT-AT"},{"guid":"...
3 Статус"},{"guid":"5340ae58-20d8-43...
\n
<a\s[^>]*href=['"]?https?://[^?\s'">]+\K/(?=[?\s'">])
# index.php в конце
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/
RewriteRule ^ https://site.ru/ [R=301,L]
# Исключаем все лишние слеши.
RewriteCond %{THE_REQUEST} //
RewriteRule .* https://site.ru/$0 [R=301,L]
# www на без www
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule .* https://site.ru/$0 [R=301,L]
# http на https
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{SERVER_PORT} !^443
RewriteRule .* https://site.ru/$0 [R=301,L]
RewriteEngine On
RewriteCond %{THE_REQUEST} ^\S+\s/contacts\.php
RewriteRule ^ /contacts [R=301,L]
RewriteRule ^contacts$ /contacts.php [L]
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^contacts\.php /contacts [R=301,L]
RewriteRule ^contacts$ /contacts.php [L]
Или хотя бы отобразить по ссылке на file.jpeg, сам file.gif
map $uri $gif {
default $uri;
~^(.*)\.jpeg$ "$1.gif";
}
server {
location @original {
try_files $image_folder_1$uri $image_folder_0$uri $image_folder_1$gif $image_folder_0$gif @errors;
}
RewriteRule ^channel
выше RewriteRule ^(.*)$ $1.php
RewriteEngine On
RewriteBase /
# Редирект с http на https создан автоматически при заказе бесплатного ssl-сертификата
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
# Конец редиректа
RewriteRule ^channel/([^/]+)/edit edit/card.php?id=$1 [L,QSA]
RewriteRule ^channel/([^/]+)/$ channel.php?id=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
ErrorDocument 404 /errors/404.php
RewriteEngine On
RewriteBase /
# Редирект с http на https создан автоматически при заказе бесплатного ssl-сертификата
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
# Конец редиректа
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.*)$ $1.php [L]
RewriteRule ^channel/([^/]+)/edit edit/card.php?id=$1 [L,QSA]
RewriteRule ^channel/([^/]+)/$ channel.php?id=$1 [L,QSA]
ErrorDocument 404 /errors/404.php