Nginx перенаправляют для определенного расширения файла

Я испытываю затруднения при установке перенаправлений для расширения Magento. URL, который требуют:

example.com/index.php/Cdiscount/Package/download/type/offers/filename/BMS_PREFIX_161d529d7c3ef4b5ae1dca92e2334de6/BMS_PREFIX_161d529d7c3ef4b5ae1dca92e2334de6.zip

но nginx должен возвратиться:

example.com/index.php/Cdiscount/Package/download/type/offers/filename/BMS_PREFIX_161d529d7c3ef4b5ae1dca92e2334de6 

вместо этого.

Часть между BMS_PREFIX_ и .zip будет часто изменяться, таким образом, это должно, вероятно, выбрать все .zip запросы файла в предложениях / местоположение. Я не на 100% уверен если имя файла в offers/filename/BMS_PREFIX... настраивается, чтобы быть чем-то еще или изменениями на запрос, но я предполагаю, что он не изменится.

Так в основном я должен сказать Nginx отвечать с example.com/path/ когда запрос на example.com/path/path.zip требуется.

текущая конфигурация:

location / {
    proxy_pass http://127.0.0.1:6081;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    #proxy_hide_header X-Varnish;
    proxy_hide_header Via;
    proxy_hide_header Vary;
    proxy_hide_header X-Server;
    proxy_hide_header X-Backend-Server;
    proxy_hide_header X-Frame-Options;
    proxy_redirect off;
    proxy_max_temp_file_size 0;
    proxy_connect_timeout      7200;
    proxy_send_timeout         7200;
    proxy_read_timeout         7200;
    proxy_buffer_size          256k;
    proxy_buffers              4 512k;
    proxy_busy_buffers_size    512k;
    proxy_temp_file_write_size 512k;
}
0
задан 1 September 2014 в 18:53
1 ответ

Может быть, вы имеете в виду что-то подобное

rewrite ^(/index\.php/Cdiscount/Package/download/type/offers/filename/BMS_PREFIX_)(.+?)/BMS_PREFIX_(.+).zip $1$2;

Добавьте выше строку перед оператором proxy_pass.

Примечания:

  • Чтобы проверить, работает ли перезапись, либо настройте логирование запросов в Magento, либо используйте rewrite_log от nginx
  • Эта перезапись не проверяет, является ли BMS_PREFIX после имени файла и BMS_PREFIX до .zip одной и той же строкой. Другими словами, запрос example.com/path/otherpath.zip все равно будет переписан на example.com/path
  • Для объяснения этой схемы регекса, смотрите здесь.
1
ответ дан 4 December 2019 в 17:12

Теги

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