I am using Cloudflare to retrieve the Geo IP of a user.

When using this in pub/index.php it always works and I am able to set the correct store view based on the header Cloudflare is passing.

However, this doesn't seem good practice (and it is ignored in my repository too). So that's why I'm trying to do it correctly via this observer:

<event name="controller_action_predispatch">
    <observer name="elephant_cfparent_controller_redirect" instance="Elephant\CFParent\Model\ObserverGeoIP" />

However, this is being cached, resulting in an incorrect store view for a user in another country. Is anyone aware on how I can do this without cache? Or am I using the wrong event name for example?

Cache is normal Magento FPC (no Varnish) and I'm on Magento 2.0.7.

2 Answers 2


You can try another event controller_front_send_response_before


Use around plugin on \Magento\Framework\App\FrontControllerInterface::dispatch method and do redirect without call dispatch method.

  • Cheers. That should work too. I found out that the event works though, but my code was wrong. D'oh! But I'll leave this question and the answer for if someone ever wonders how this works.
    – TommyK
    May 31, 2016 at 8:56
  • @ToomyK i am getting same issue as my controller_action_predispatch event get cached and my code does not execute for second time Jul 10, 2019 at 11:59
  • @TommyK, were you able to fix the issue? I am using Varnish and my observer is not being called when the cached content is loaded.
    – anujeet
    Jun 11, 2020 at 12:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.