правило перезаписи на nginx для файлов css js не работают

Я использую платформу laravel для своего веб-сайта на сервере nginx

Мне нужно применить правило перезаписи на nginx

это образец:

site.com/play/gamename/css.css --> site.com/uploads/games/gamename/css.css
or
site.com/play/gamename/js.js --> site.com/uploads/games/gamename/js.js

, и мне нужно знать, как я могу определить правило для этого?

мой корневой путь веб-сайта -

/var/www/html/siteuser/

корневые каталоги:

app
storage
public
-uploads
,...

на моем старом сервере с apache .htaccess:

RewriteCond %{REQUEST_URI} \.(jpg|png|css|js|appcache|xml|ogg|m4a)$
RewriteRule ^play/(.+) siteuser/public/uploads/games/$1 [L]

Я тестирую это, но не работаю:

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html/siteuser/public;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.php;

        server_name .site.com;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ /index.php?$query_string;
                if ($uri ~ ".(jpg|png|css|js|appcache|xml|ogg|m4a)$"){
                        set $rule_0 1$rule_0;
                }    
        }
        if ($uri ~ ".(jpg|png|css|js|appcache|xml|ogg|m4a)$"){
                set $rule_0 1$rule_0;
        }
        if ($rule_0 = "1"){
                rewrite ^/play/(.+) /siteuser/public/uploads/games/$1 last;
        }


        # pass PHP scripts to FastCGI server
        #
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
        #
        #       # With php-fpm (or other unix sockets):
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        #       # With php-cgi (or other tcp sockets):
        #       fastcgi_pass 127.0.0.1:9000;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny all;
        }
}
2
задан 9 August 2018 в 00:09
1 ответ

Вам вообще не следует использовать перезапись для этого. Вместо этого используйте псевдоним ed расположение .

Например:

location ~* ^/play/.*\.(jpg|png|css|js|appcache|xml|ogg|m4a)$ {
    alias /var/www/html/siteuser/public/uploads/games/;
}

Это будет обслуживать только статические файлы с указанными расширениями для URL-адресов, начинающихся с / play / , из пути, указанного в псевдониме , с использованием сопоставления без учета регистра. Никакой код PHP не может запускаться изнутри / play / в этой конфигурации.

0
ответ дан 3 December 2019 в 13:54

Теги

Похожие вопросы