Как заставить активы работать с Symfony3 в подкаталоге на Nginx

На основании этого вопроса Как установить приложение symfony2 в подкаталог в nginx

Я создал приложение symfony3, которое работает в подкаталоге bcms4. Мне удалось заставить php работать с PHP-FPM, но у меня есть проблемы с ресурсами. Когда я хочу получить актив, он направляет запрос к app_dev и показывает 404, потому что путь явно не существует.

Мой вопрос заключается в том, как сделать так, чтобы app_dev не загружался, а загружался как предполагалось?

Поэтому, когда я вхожу

test.localhost / s / asdfad -> он запускает Symfony
test.localhost / asdf -> он запускает другое приложение, живущее в главном каталоге
test.localhost / s / assets / css / test.css -> он покажет файл в каталоге /var/www/test.localhost/bcms4/web/assets/css/test.css

Мой конфиг nginx:

server {
listen 80;

root /var/www/test.localhost;
index index.html index.htm index.php;

# Make site accessible from http://localhost/
server_name test.localhost;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}

location ~ ^/s(/.*)$ {
try_files /s/web$1 /web$1 @sf2dev =404;
}location @sf2dev {
expires off;
fastcgi_pass  unix:/var/run/php5-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME   /var/www/test.localhost/bcms4/web/app_dev.php;
fastcgi_param SCRIPT_NAME       /s/app_dev.php;
fastcgi_param REQUEST_URI       /s$1;
}location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
fastcgi_intercept_errors on;
}

}

0

Решение

После нескольких часов попыток мне удалось разобраться с небольшим взломом.

Это то, что я добавил в мой конфигурационный файл

location ~ ^/s(/.*).\w{1,5}$ {
rewrite ^/s(/.*) /bcms4/web$1  break;
return 404;
}

Он перезапишет файлы с префиксом / s и расширением в каталог, где они находятся на самом деле.

Может быть, это кому-то поможет. Я оставлю вопрос открытым на некоторое время, может быть, у кого-то есть лучшее решение, потому что оно кажется мне хакерским.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]