Nginxredirect特定的文件扩展名

我无法为Magento扩展程序设置redirect。 请求的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...可configuration为其他东西或更改每个请求,但我认为它不会改变。

所以基本上我需要告诉Nginx在请求example.com/path/时候用example.com/path/回复。

当前configuration:

 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; } 

也许你的意思是这样的

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

proxy_pass语句之前添加上面的行。

备注

  • 要检查重写是否正常,可以在Magento上设置请求日志logging,也可以使用nginx的rewrite_log
  • 这个重写不检查文件名后的 BMS_PREFIX.zip之前的BMS_PREFIX是否是相同的string。 换句话说,request example.com/path/otherpath.zip仍然会被重写为example.com/path
  • 有关这个正则expression式的解释,请看这里 。