1

我一直在处理这个问题大约几个小时,但没有任何成功。我无法从我的项目中提供静态文件的问题。

以前我对Apache 服务器有以下规则。

RewriteRule ^assets/(.*)$ /web/assets/$1 [L]
RewriteRule ^css/(.*)$ web/css/$1 [L]
RewriteRule ^js/(.*)$ web/js/$1 [L]
RewriteRule ^images/(.*)$ web/images/$1 [L]

我在我的 nginx 配置中尝试了以下位置规则

  location ~ ^/css/?(.*)$ {
        #return 200 $document_root/web/css/$1;
        # kill cache
        add_header Last-Modified $date_gmt;
        add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
        if_modified_since off;
        expires off;
        etag off;
       #try_files $uri $uri/ /index.php =404;
       try_files $document_root/web/css/$1 =404;
    }

顺便#return 200 $document_root/web/css/$1;返回有效路径。

但请求仍然失败。

我也尝试使用alias如下

  location ~ ^/css/?(.*)$ {
        alias /var/wwww/myproject/web/css;
        # kill cache
        add_header Last-Modified $date_gmt;
        add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
        if_modified_since off;
        expires off;
        etag off;
        try_files $uri $uri/ /index.php =404;
    }

同样的情况404,如果我在上面的位置更改404它也会返回另一个代码,因此到达位置语句但try_files不起作用

请帮助解决问题,我不知道该尝试什么。谢谢

4

1 回答 1

0

如果可以通过将 的值与当前 URI 连接来构造文件路径,则root应该使用rootand not alias。有关详细信息,请参阅此文档

假设它/css/foo.css位于/var/www/myproject/web/css/foo.css以下示例中就足够了。

location /css/ {
    root /var/www/myproject/web;
    ...
    try_files $uri $uri/ /index.php;
}

您不需要使用正则表达式location,也不需要捕获部分 URI。

try_files语句需要以=404or结尾/index.php,而不是两者。有关详细信息,请参阅此文档

于 2018-10-10T11:04:59.000 回答