我已经处理了大约几个小时的问题,但没有成功。 我无法从项目中管理静态文件的问题。
以前,对于 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不起作用
请帮助解决问题,我不知道可以尝试什么。 谢谢
答案 0 :(得分:0)
如果可以通过将root
的值与当前URI串联来构造文件路径,则应使用root
而不是alias
。有关详细信息,请参见this document。
假设/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
语句必须以=404
或/index.php
结尾,而不是两者都结尾。有关详情,请参见this document。