This is the path reference that you are provided in layout file <path>earnings/earnings/</path> This will set your link to this path `http://www.mysite.com/earnings/earnings`. When magento looks for this path, it cannot find a valid controller definition. That is why it throws `404 error`. So set your path to <path>earnings/</path> or <path>earnings/index/</path> will solve your issue. Now the link look like `http://www.mysite.com/earnings/index/`. You have defined your block for this specific url. Note you have used `earning_index_index` handle in your layout file. This handle will be processed by magneto only when `http://www.mysite.com/earnings/index/` url get requested. Note: In order to work this url perfectly, you should have an `IndexController.php` is defined for your module and this file should hold this method. public function indexAction() { $this->loadLayout(); $this->renderLayout(); } If this method and this file is not defined for your module, Magento will throw `404 error` again.