Magento:URLからindex.phpを削除したい

YK
2025-07-29
2025-07-29

はじめに

Magentoで開発・構築を進めていると、商品ページやカテゴリページのURLに
以下のように index.php が含まれてしまうケースがあります。

https://example.com/index.php/product-name

これはSEO的にも見た目的にも避けたいですよね。
なので今回は、MagentoのURLから index.php を消す方法をまとめてみました。

index.php が含まれる原因

Magentoでは、サーバーのURL Rewrite設定(mod_rewrite等)が正しく構成されていない場合、index.php をURLに含めた状態でページが表示されます。
この状態は一時的な仮設定のようなもので、以下の方法によりRewrite機能を有効にすることで非表示にすることが可能です。

 

URLから index.php を消す方法

1)Magentoの設定確認

管理画面の下記の設定を確認します。

[ Stores > Configuration > Web > Search Engine Optimization ]
   Use Web Server Rewrites:Yes  に設定

 

2)Apache(mod_rewrite)を有効化

Apacheを使用している場合は、URL Rewriteを処理するモジュールを有効にします。

まずは rewrite_moduleが読み込まれているか認します。

$ httpd -M  |  grep 'rewrite'
rewrite_module (shared)

rewrite_module (shared) が表示されない場合は、以下のようにRewriteモジュールを有効化します。

$ a2enmod rewrite
$ systemctl restart apache2

 

3).htaccessの確認

Magentoのルートディレクトリには、初期状態で .htaccess ファイルが存在します。
以下のような記述があることを確認してください。

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .* index.php [L]
</IfModule>

 

4)キャッシュのクリア

設定変更後は、Magentoのキャッシュを必ず削除します。

$ php bin/magento cache:flush

 

 

以上より、例えば

https://example.com/index.php/product-name

https://example.com/product-name

でアクセスできるようになるのですっきりしますね。

但し、環境ごとに挙動が異なるケースもあるため、本番環境に適用する際は事前にステージングでの動作確認するなどの対応をおすすめします。