I write echo $block->getBaseUrl() in my .phtml template, and show output http://localhost/magento2/index.php/. I want to remove index.php from that output. How can i do that?

  • Please check my answer. – Nikunj Vadariya Oct 20 '16 at 5:12
  • @NikunjVadariya basically your answer and denish answer is the same :) – Seventh St Oct 20 '16 at 6:50
  • Yes, but I answer you first. NP :) – Nikunj Vadariya Oct 20 '16 at 6:52

URL rewrites will remove index.php from url

How to enable URL rewrites?

1   Stores > Configuration > Web
2   expand the Search Engine Optimization section
3   set Use Web Server Rewrites to “Yes.”
4   When complete, tap Save Config

Hope this will help you.

  • and then bin/magento setup:upgrade – popeye Sep 8 '18 at 19:28
  • setup:upgrade for a config change? Surely not. – LM_Fielding Feb 8 '20 at 14:06

You can remove the index.php in the frontend URLs performing the following steps in Magento's admin section:

In System -> Configuration -> Web -> Search Engines Optimizations, select YES.

Edit the /rootdir/.htaccess and uncomment the line:

RewriteBase /magento2/

In my case the subdirectory Magento is in is called magento2, so change it to your subdirectory path if it is different.


Magento 2.2: Add below line in .htaccess File

AddHandler application/x-httpd-php70 .php .php5 .php4 .php3

After that enable URL Rewrites from Admin:

  1. Stores>Configuration> Web
  2. Expand the Search Engine Optimization section
  3. Set Use Web Server Rewrites to “Yes.”
  4. When complete, tap Save Config

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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