我必须更新nginx主机,以便将对别名的所有请求重写到/alias_path/index.php?q=$uri。但现在所有的资产都不再可用了。
这是我目前的配置。我越来越接近了,但是当我取消对最后一个位置的评论时,这些资产就不再可用了。
location /csv-import {
alias /var/www/csv-import/public;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
try_files $uri $uri/ =404;
#location ~ ^/csv-import/(.*)$ {
#alias /var/www/csv-import/public;
#try_files $uri $uri/ /csv-import/index.php?q=$1;
#}
error_log /var/log/nginx/csv-import.error.log;
access_log /var/log/nginx/csv-import.access.log;
}我不想接触的文件是/var/www/csv-import/public/index.php。像example.com/csv-import/some/url这样的所有Urls都应该重写到example.com/csv-import/index.php?q=some/url中,但是像example.com/csv-import/css/app.css这样的资产应该可以在/var/www/csv-import/public/css/app.css下使用。
我认为,有一个解决方案是完美的,但我想不出。
发布于 2018-03-18 15:14:14
您不需要另一个location块。通常的方法是更改try_files语句的默认操作。但是由于本期,if块可能更简单:
location ^~ /csv-import {
alias /var/www/csv-import/public;
if (!-e $request_filename) {
rewrite ^/csv-import/(.*)$ /csv-import/index.php?q=$1 last;
}
location ~ \.php$ {
...
}
error_log /var/log/nginx/csv-import.error.log;
access_log /var/log/nginx/csv-import.access.log;
}if块替换try_files语句。^~运算符避免了与其他location块的任何歧义。关于if的使用,请参阅if。
https://stackoverflow.com/questions/49349276
复制相似问题