OpenCart SEO完全ガイド

セルフホスト型のオープンソースEC基盤OpenCartでSEOがどう機能するかを解説します。コアが対応するカノニカル、robots.txt、メタ項目、有効化が必要なSEO URLと.htaccess、OpenCart 3から4で削除されたサイトマップ、コアにない構造化データとhreflangを扱います。

初回公開:2026年7月2日 · 最終更新:2026年8月13日 · Advanced
言語
このページには証拠シグナルが1件あります

OpenCartはセルフホスト型のオープンソースPHP ECプラットフォームで、ShopifyやBigCommerceとは異なり、SEO機能の多くが初期状態で無効です。フレンドリーURLにはUse SEO URLの設定と.htaccess.txtから.htaccessへの改名という2手順が必要で、片方を欠くとNot Foundエラーになります。エンティティごとのSEOキーワードは初期状態で空欄の手入力項目です。カノニカルタグはネイティブ実装であり、ソースでも確認でき、複数カテゴリーに属する商品の重複問題へすでに対応しています。XMLサイトマップはバージョン依存で、OpenCart 3にはありましたがOpenCart 4では削除され、拡張機能が必要です。構造化データとhreflangはコアにまったくなく、WooCommerce、Shopify、BigCommerceより大きなネイティブ機能の欠落です。

TL;DR — OpenCartはセルフホスト型のオープンソースPHP基盤です。サーバーへ完全にアクセスでき、構造上の制約がないためSEOの上限は高い一方、初期状態ではSEOがほぼ無効なので最低水準は低めです。 フレンドリーURLにはUse SEO URL = Yesの設定と、mod_rewriteを有効にしたうえで.htaccess.txt.htaccessへ変更する作業の両方が必要です。片方を欠くとNot Foundエラーになります。エンティティごとのSEOキーワードは初期状態で空欄の手入力項目です。商品・カテゴリーページのカノニカルタグはネイティブ実装であり(ソースで確認済み)、複数カテゴリーに属する商品の重複問題をすでに無効化するため、「カノニカル拡張機能を入れる」という助言の多くは不要です。XMLサイトマップはバージョン依存で、OpenCart 3にはGoogle Sitemapフィードがありましたが、OpenCart 4では削除され、拡張機能が必要です。構造化データとhreflangはコアにまったくありません。

Evidence for this claim OpenCart's SEO URL feature requires enabling the setting and configuring the server rewrite file. Scope: OpenCart installations using the documented Apache-style setup; server configuration can differ. Confidence: high · Verified: OpenCart documentation: SEO URL Evidence for this claim OpenCart features and bundled extensions vary by major version and should be verified against the installed release. Scope: OpenCart source repository and release-specific behavior. Confidence: high · Verified: OpenCart GitHub repository

全体像:ネイティブ機能、設定で有効にする機能、拡張機能

OpenCart SEOの記事の多くは、サイトマップ拡張機能を売るための記事型リストか、古いOpenCart 1,5/2.xの認識で止まったフォーラム投稿です。より有用なのは、OpenCartが同梱するソースコードを直接確認し、各機能を3つの区分に整理することです。

ネイティブで、すでに適切に動くもの: 商品・カテゴリーページのカノニカルタグ、静的な既定のrobots.txt、ストア単位および各エンティティのメタタイトル/説明欄、サーバーでレンダリングされるPHP/Twig出力(初期状態でクロール可能)。

ネイティブだが無効で、設定が必要なもの: SEO URL(設定スイッチと.htaccessへの改名)、商品/カテゴリー/ページごとのSEOキーワード(手入力で、初期状態は空欄)。

コアに存在せず、拡張機能またはテーマのカスタムコードが必要なもの: OpenCart 4のXMLサイトマップ、あらゆる構造化データ、hreflang/rel=alternateタグ。

この記事全体は、この3区分を詳しく説明するものです。以下では、各機能がどの区分に属するのか、その理由とともに解説します。

SEO URLの有効化 — 見落としやすい2段階

初期状態のOpenCartはクエリ文字列URLを配信します。公式資料は、設定前の状態を次の例で説明しています。 “Set to Yes to enable friendly URLs (e.g., /iphone instead of /index.php?route=product/product&product_id=42).” (翻訳) 「フレンドリーURLを有効にするにはYesに設定します(例:/index.php?route=product/product&product_id=42ではなく/iphone)。」 読みやすいURLの有効化は2段階であり、2つ目を飛ばすことがOpenCart SEOで最もよくあるサポート問題です。

手順1 — 設定。 System → Settings → ServerでUse SEO URLを見つけ、Yesに設定して保存します。

手順2 — サーバーのリライト。 OpenCartはリライトルールを.htaccess.txtという名前で同梱しますが、Apacheはこの名前のままでは読み込みません。公式資料には次のようにあります。 “Apache: Rename htaccess.txt to .htaccess in your root directory and ensure mod_rewrite is enabled.” (翻訳) 「Apacheでは、ルートディレクトリのhtaccess.txt.htaccessへ変更し、mod_rewriteが有効であることを確認してください。」 OpenCart 4でもファイルが.htaccess.txtとして同梱されることを確認しました。同梱ファイルの冒頭にも、改名するよう明記されています。手順を省いた結果について、資料は明確です。 “SEO URLs require proper server rewrite configuration. Without it, your friendly URLs will return 404 ‘Not Found’ errors.” (翻訳) 「SEO URLには適切なサーバーリライト設定が必要です。設定がなければ、フレンドリーURLは404『Not Found』エラーを返します。」

ほかのガイドで見落とされがちな点が2つあります。

  • 改名要件は現在も有効で、過去の名残ではありません。 古いガイドは.htaccessへの改名をOpenCart 1,5/2.x時代の仕様として扱いますが、現行リリース(OpenCart 4.1.0.3)でも変わっていません。新しいバージョンが自動処理すると説明するガイドは誤りです。
  • アップグレード時の落とし穴です。 メジャーバージョン更新では.htaccess.txtが再び同梱され、更新中にカスタマイズ済みの.htaccessを知らないうちに上書きする可能性があります。更新前にバックアップし、更新後に差分を確認してください。

両方の手順を済ませても特定の商品だけにproduct_id=が表示される場合、通常はその商品のSEOキーワード欄が空のままです。次の節で説明します。

SEOキーワード — 初期状態では空欄の手入力項目

OpenCartは商品名やカテゴリー名からURLスラッグを自動生成しません。各エンティティのキーワードは、OpenCartのKey/Value/Keywordシステムに対応する手入力欄です。公式資料は一般的な商品マッピングを次のように説明しています。 “For a typical product page, you would have two entries: 1. Key: route, Value: product/product 2. Key: product_id, Value: 42.” (翻訳) 「一般的な商品ページでは2つの項目を設定します。1. Key:route、Value:product/product。2. Key:product_id、Value:42。」 そのうえで、このルートとIDの組み合わせへキーワードを割り当てます。

重要なルールは次のとおりです。

  • 形式。 “Use only lowercase characters (a-z), numbers (0-9), and hyphens (-) or underscores (_). Use a forward slash (/) for nested paths like electronics/phones.” (翻訳) 「小文字(a-z)、数字(0-9)、ハイフン(-)またはアンダースコア(_)のみを使用します。electronics/phonesのようなネストしたパスにはスラッシュ(/)を使います。」 カテゴリー階層のパスは手動で設計します。“Use forward slashes to indicate category depth (e.g., /clothing/men/shirts)” (翻訳) 「カテゴリーの階層を示すにはスラッシュを使います(例:/clothing/men/shirts)。」OpenCartがカテゴリーツリーから自動生成するわけではありません。
  • 一意性。 “Keywords MUST be unique for each store/language combination.” (翻訳) 「キーワードは、ストアと言語の組み合わせごとに必ず一意でなければなりません。」
  • 変更すると旧URLが壊れる。 “Changing an existing keyword will break old links. Set up 301 redirects if necessary.” (翻訳) 「既存のキーワードを変更すると古いリンクが壊れます。必要に応じて301リダイレクトを設定してください。」 スラッグ変更は他のURL変更と同様に扱い、旧URLをリダイレクトします。

カタログ規模で手入力するのは手間がかかるため、OpenCart Marketplaceには自動スラッグ拡張機能が数多くあります。実務上はそれが解決策になりますが、コア機能ではなく追加機能です。商品名から自動でスラッグを作るWooCommerce、Shopify、BigCommerceとは大きく異なります。

カノニカルタグ — ネイティブ実装と、修正すべき誤解

OpenCart SEOの記事で特に誤りが多い点です。OpenCartにはカノニカル対応がなく、重複コンテンツを直すには拡張機能が必要だという主張がありますが、それは誤解です。ソースコードを見れば明確です。OpenCart 4の商品コントローラーはaddLink(..., 'canonical')を呼び出し、訪問者がどのカテゴリー経由で到達しても、カノニカルは常にフラットなproduct/product&product_id=Xルートへ解決されます(product.php)。カテゴリーコントローラーもカテゴリーページで同様に処理します(category.php)。

実務上、複数カテゴリーに登録された商品でも、OpenCart自身のカノニカル処理によってGoogle向けの重複コンテンツリスクは生じません。どの経路から入っても、同じフラットな商品URLへ正規化されるためです。コアは「同じ商品に複数のカテゴリーURLがある」という典型的なEC問題をすでに解決しています。一部のパンくずやテーマ設定では表示URLが経路ごとに異なる場合がありますが、カノニカルタグがランキング上のリスクを抑えるため、これはインデックス問題ではなくUXや一貫性の問題です。

実際の注意点は1つです。ページ分割されたカテゴリーページでは、OpenCartは一覧表示URLへ統合せず、&page=Nを付けた各ページを自己参照カノニカルにします。これは、ページ1へまとめず各ページに固有のカノニカルを設定するというGoogleのECガイダンスと一致するため、警告ではなく認識しておくべき仕様です。カノニカルは命令ではなくヒントです。Googleの表現では、“indicating a canonical preference is a hint, not a rule.” (翻訳) 「カノニカルの優先指定はヒントであり、規則ではありません。」

XMLサイトマップ — 見落とされがちなOpenCart 3から4への後退

最近アップグレードしたストアの監査で役立つ、検証可能な事実です。明確に説明した資料はほとんど見かけません。「OpenCartにサイトマップはあるか」という問いには、バージョンを明示した回答が必要です。

  • OpenCart 3には、コアのGoogle Sitemapフィードコントローラー(extension/feed/google_sitemap)がありました。Extensions → Feedで有効にできる基本的なXMLサイトマップです。OpenCart 3の現行リリースである3.0.5.0のソースで存在を確認しています。
  • OpenCart 4では削除されました。想定されるv4のどちらのパスにも同等のコントローラーはなく、古いガイドがリンクするdocs.opencart.com/administration/seo/も404です。OpenCart 4では、サイトマップ生成にMarketplaceの拡張機能が必要です。

既存ガイドの多くはOpenCart 3向けに書かれたまま更新されておらず、「組み込みサイトマップがある」と断言します。3では正しく、4では誤りです。どのバージョンでもサイトマップには価値があります。Googleは、“when creating a sitemap, you’re telling search engines about which URLs you prefer to show in search results,” (翻訳) 「サイトマップを作成することで、検索結果に表示したいURLを検索エンジンへ伝えます」 と説明する一方、“submitting a sitemap is merely a hint.” (翻訳) 「サイトマップの送信は単なるヒントです」とも述べています。生成方法にかかわらず、フィルター、並べ替え、カート、決済のパラメーターURLを除外し、Googleの1ファイル当たり50 000 URL/50 MBという上限を守ってください。超える場合はサイトマップインデックスを使います。

robots.txt — 手動確認が必要な静的な既定ファイル

OpenCartは製品ルートに静的なrobots.txtを同梱します。初期状態での役割は、並べ替え、フィルター、ページ分割のパラメーター付きクエリ文字列がクロールされるのを防ぐことです。現行リリース(OpenCart 4.1.0.3)の同梱ファイルは次のとおりです。

user-agent: *
Disallow: /*?page=$
Disallow: /*&page=$
Disallow: /*?sort=
Disallow: /*&sort=
Disallow: /*?order=
Disallow: /*&order=
Disallow: /*?limit=
Disallow: /*&limit=
Disallow: /*?filter_name=
Disallow: /*&filter_name=
Disallow: /*?filter_sub_category=
Disallow: /*&filter_sub_category=
Disallow: /*?filter_description=
Disallow: /*&filter_description=
Disallow: /*?filter_group=
Disallow: /*&filter_group=

これは妥当な既定値であり、Googleが典型的な重複元として挙げる*“the results of sorting and filtering functions of a category page.”* (翻訳) 「カテゴリーページの並べ替え機能やフィルター機能による結果」に直接対応します。バージョン差にも注意が必要です。OpenCart 3の現行版(3.0.5.0)は異なる既定値を持ち、User-agent:を正しく大文字で記述し、OpenCart 4にはないDisallow: /*?route=product/search&route=product/searchを追加しています。一方、OpenCart 4にはOpenCart 3にないfilter_groupルールがあります。古いタグでは両者がバイト単位で同じでしたが、その後分岐しました。OC3とOC4のストアが同じファイルを使うと思い込まず、実際の環境を確認してください。さらに3点あります。

  • サイトマップを宣言しません。 初期状態ではSitemap:行がありません。サイトマップURLを用意したら追加してください。
  • 自動生成も自動更新もされません。 SEO URLを有効にしても変更されません。手動で監査してください。また、robots.txtはクロールを止めるもので、インデックス登録を解除するものではありません。インデックスから除外する役割は、クロール可能なページのnoindexにあります。

メタタグ — ストア単位のフォールバックと各エンティティの項目

OpenCartには2階層のメタタイトル/説明欄があります。System → Settings → Generalのストア単位の欄は全体のフォールバックです。公式資料はストアのMeta Titleを*“(Required)… critical for SEO”* (翻訳) 「(必須)…SEOに極めて重要」とし、説明文は160文字前後を推奨しています。Meta Keywords欄もありますが、現在はどの検索エンジンでもランキングシグナルではないため空欄で構いません。商品、カテゴリー、情報ページには、それぞれページ単位のメタ項目を持つSEOタブがあります。重要な商品やカテゴリーごとに固有のタイトルと説明を書き、ストアの既定値だけに依存しないことが実務上の中心です。

構造化データ — コアには一切ない

OpenCart 4の既定の商品テンプレートでschema.orgapplication/ld+jsonitempropを検索しましたが、一致は0件でした。OpenCartコアはどのページにも構造化データを出力しません。価格、在庫状況、評価を含むProductスキーマも、BreadcrumbListも、Organizationもありません。基本的なProduct JSON-LDをネイティブ出力するWooCommerceや、既定テーマにスキーマがあるShopify/BigCommerceより大きな欠落です。

すべて拡張機能またはカスタムテーマで対応します。商品リッチリザルトでは、GoogleのMerchant Listings(フィードまたはマークアップを使い、価格・在庫状況を重視)とProduct Snippets(評価・レビューを重視)という2つの適格性経路を理解しておく必要があります。必須プロパティが異なるため、狙う表示に合わせて選び、マークアップしてください。Marketplaceのスキーマ拡張機能か、テーマの商品テンプレートへ手書きのJSON-LDを追加します。GoogleはJSON-LDを推奨しています。

多言語とhreflang — 言語切り替えであってhreflangタグではない

ここは公式資料を誤読しやすいため、正確に区別します。OpenCartの多言語システムは言語切り替えのドロップダウンであり、自動hreflang実装ではありません。同梱の言語コントローラー(language.php)を全体確認すると、<select>形式の切り替え用リストを構築しますが、ファイル内にもOpenCartのエンジン層にもhreflangrel=alternateリンクの生成はありません。

公式資料には*“OpenCart automatically handles the technical SEO aspects of multi-language URLs, but you must provide the localized keywords.”* (翻訳) 「OpenCartは多言語URLの技術的なSEO面を自動処理しますが、ローカライズされたキーワードは利用者が指定する必要があります」とあります。厳密には、「技術的なSEO面」とは言語切り替え時に言語別URLを生成することを指し、<head><link rel="alternate" hreflang="x">を出力することではありません。ソースでもタグが存在しないことを確認できます。この文をhreflang対応の根拠にしないでください。多言語ストアでは、テーマ編集または拡張機能で実際のhreflangタグを追加します。仕組みはhreflangで詳しく説明しています。

ヘッドレスとAPI — 柔軟性と引き換えにSEOは実装側の責任になる

OpenCartには、カスタムまたはヘッドレスのフロントエンドを構築するための公式APIがあります。資料では、“integrations with inventory systems, ERP software, mobile apps, custom frontends, and other third-party services.” (翻訳) 「在庫システム、ERPソフトウェア、モバイルアプリ、カスタムフロントエンド、その他の第三者サービスとの統合」を可能にすると説明しています。ただし、ShopifyのHydrogenやBigCommerceのCatalystに相当する公式PWA/SSR製品はありません。「ヘッドレスOpenCart」はすべて、API上へReactやVueを重ねる第三者の制作会社による実装です。

SEO上の要点は、既定のOpenCartストアフロントはサーバーでレンダリングされるPHP/Twigであり、初期状態でもクロールしやすいことです。ヘッドレス化すると、このネイティブなクロール可能性と引き換えに開発の柔軟性を得ますが、SSRやレンダリングの正確性はフロントエンドを作る会社の責任になります。公式ヘッドレスフレームワークのようなレンダリング保証をOpenCartは提供しません。この方式を採る場合は、JavaScript SEOの原則を自分で適用する必要があります。

ネイティブブログ(CMS → Articles)

2025年1月に公開されたOpenCart 4.1.0.0では、軽量なネイティブブログ/CMSが追加されました。OpenCart自身のリリースノートには、このバージョンの追加機能として「Blog system」が記載されています。管理画面のCMS → Articlesにあり、各記事でリッチテキスト、画像、分類に加え、商品やカテゴリーと同じエンティティ単位のMeta Title、Meta Description、Meta Keywordsを設定できます。以前のOpenCartにはネイティブブログがなく、コンテンツマーケティングやトピカルオーソリティのためにWordPressを別途設置するか、Marketplaceのブログ拡張機能が必要でした。これは、WooCommerce(WordPressがネイティブ)やShopify(ブログがネイティブ)が持っていたコンテンツ基盤上の優位とのギャップを埋めます。公開から時間は経っていますが、OpenCart SEOガイドの多くは追加前かOpenCart 3向けに書かれているため、4,1以降のストアではCMS → Articlesを確認する価値があります。

OpenCartとホスト型プラットフォームの率直な比較

OpenCartShopify/BigCommerce
ホスティングセルフホスト、サーバーへ完全アクセス完全ホスト型SaaS
フレンドリーURL初期状態では無効(設定+.htaccessへの改名)導入時から有効
URLスラッグエンティティごとに手入力商品名から自動生成
カノニカルタグネイティブ(商品+カテゴリー)ネイティブ
XMLサイトマップOC3はネイティブ/OC4は拡張機能が必要自動生成
構造化データコアにはない既定テーマに含まれる
hreflangコアにはない手動(BigCommerce)/アプリ(Shopify)
上限非常に高い(実際のPHP/MySQL)プラットフォームにより制限

OpenCartはSaaS型プラットフォームの鏡像です。SaaSは高い最低水準と制限された上限を提供しますが、OpenCartは最低水準が低い代わりに上限がありません。サーバーを所有するため構造上の制約はない一方、何も自動では整いません。SEO URLと.htaccessへの改名を正しく設定し、キーワードを入力し、ネイティブのカノニカルを検証し、サイトマップ(OC4では拡張機能)を追加し、robots.txtを整え、スキーマとhreflangを実装すれば、OpenCartストアは他の基盤と十分に競えます。

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.