Несколько строк преобразования Htaccess в Nginx

#.htaccess #nginx #converters

Вопрос:

Я попробовал онлайн-конвертеры, но ни один из них не работал.

Как я могу преобразовать приведенные ниже строки htaccess в правило nginx. Я смог преобразовать только одну строку из приведенного ниже кода. Я даже не знаю, правильно это или неправильно.

Мой nginx Conf

 server {
    server_name example.com;
    root /var/www/example.com;

    index index.html index.htm index.php;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
     }
  
    location ~ /.ht {
        deny all;
    }
 

Это код, который я хочу преобразовать в nginx.

     <IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (. )/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # cors
    Header set Access-Control-Allow-Origin "*"
</IfModule>

# Hide a specific file
<Files .env>
    Order allow,deny
    Deny from all
</Files>
 

Это единственные строки, которые я смог преобразовать.

 # Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
 

Для

 try_files $uri $uri/ /index.php;
 

Все еще у меня есть сомнения в приведенном выше правиле nginx, должно ли оно содержать ?$args перед знаком двоеточия или нет?

Пожалуйста, помогите мне с этим.

Ответ №1:

Пожалуйста, обратите внимание, что я использовал искусственный интеллект, чтобы помочь в этом преобразовании. Любопытно посмотреть, как это получилось.

 # cors
add_header Access-Control-Allow-Origin *;

# gzip
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml rss text/javascript;

# cache
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=cache:10m max_size=10g inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

# security
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "no-referrer";
add_header X-Permitted-Cross-Domain-Policies "none";

# php
fastcgi_split_path_info ^(. .php)(/. )$;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
 

Комментарии:

1. «искусственный интеллект»?! лол, ему нужно больше тренироваться! Помимо самой первой директивы (хотя она и не имеет контекста ), это даже не соответствует действительности!?

2. Это не работает.