Автоконвертация htaccess в конфиг nginx не работает, почему?

Обычно под Апачем я использую для ряда своих сайтов htaccess с обрезанием расширения файлов (file.*) и редиректом с index.* на слеш (или без), то тут перешли фронтом на nginx/1.14.1 (PHP FastCGI) и у меня не получается сконвертировать конфиг, пользовался разными онлайн-конверторами, ниже выкладываю конф от самого известного, вроде всё правильно, но либо не работает обрезка расширений htm-файлов, либо валится сервер. Для меня важны только строчки с с перезаписью адресов. В чём ошибка?

# htaccess configuration
AddDefaultCharset UTF-8
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} /index.htm
RewriteRule ^(.*)$ http://site.ru/ [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.htm\ HTTP
RewriteRule ^([^.]+)\.htm$ http://site.ru/$1 [R=301,L]
RewriteCond %{REQUEST_URI} !(\.[^./]+)$
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule (.*) /$1.htm [L]
AddType application/x-httpd-php .html .htm


# nginx configuration

charset utf-8;

location ~ (\.[^./]+)$ {
}

location / {
  rewrite /index.htm http://site.ru/ redirect;
  rewrite ^/([^.]+)\.htm$ http://site.ru/$1 redirect;
  if (!-e $request_filename){
    rewrite ^(.*)$ /$1.htm break;
  }
}

location ~ \.(html|htm)$ {
  if (!-e $document_root$document_uri){return 404;}
  fastcgi_pass localhost:9000;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include fastcgi_params;
}
  • Вопрос задан
  • 46 просмотров
Пригласить эксперта
Ответы на вопрос 1
@dodo512
AddType application/x-httpd-php .html .htm

Чтобы php-fpm выполнял код в файлах .htm нужно править security.limit_extensions

if ($request_uri ~ "/index\.htm") {
    return 301 /;
}

if ($request_uri ~ "^([^.?]+)\.htm") {
    return 301 $1;
}

location / {
    try_files $uri $uri/ $uri.htm$is_args$args;
}

location ~ \.htm {
    try_files $uri =404;
    
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы