OpenCart SEO完全ガイド
セルフホスト型のオープンソースEC基盤OpenCartでSEOがどう機能するかを解説します。コアが対応するカノニカル、robots.txt、メタ項目、有効化が必要なSEO URLと.htaccess、OpenCart 3から4で削除されたサイトマップ、コアにない構造化データとhreflangを扱います。
言語
このページには証拠シグナルが1件あります
- 関連するライブツールHTTP Status & Redirect Checker
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より大きなネイティブ機能の欠落です。
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 repositoryTL;DR — OpenCartは、自分のホスティング環境へインストールする無料のストア基盤です (Shopifyのようなサブスクリプションサービスではありません)。強力ですが、SEO機能の大半は 初期状態で無効です。特につまずきやすい点は2つあります。フレンドリーURLには設定変更と ファイル名変更の両方が必要で、OpenCart 4はOpenCart 3のようにXMLサイトマップを生成しません。 一方、重複ページ同士の競合を防ぐカノニカルタグは、最初から有効です。
「OpenCart SEO」とは
OpenCartはセルフホスト型のオープンソースECプラットフォームです。無料でダウンロードして 自分のウェブホスティングへインストールし、サーバー、更新、セキュリティを自分で管理します。 すべてを事業者側がホストし、初日から整ったURLやサイトマップを提供するShopifyやBigCommerceとは対照的です。
「OpenCart SEO」とは、商品やカテゴリーを発見、クロール、インデックス登録、ランキングの対象にする通常のSEOを、 OpenCartストアへ適用することです。OpenCartでは、自分で有効化するまで無効のSEO機能が非常に多いため、 専用のガイドが必要になります。
OpenCartが対応すること、しないこと
初期状態で有効なもの:
- カノニカルタグ。 OpenCartは商品ページとカテゴリーページへ自動的に追加し、同じページの重複版が競合するのを防ぎます。
- 基本的な
robots.txt。 煩雑なフィルター/並べ替えURLのクロールを防ぐ小さなファイルが同梱されています。 - メタタイトル/説明欄。 入力欄は用意されており、内容は運営者が記入します。
対応するまで無効、または利用できないもの:
- フレンドリーURL。 初期状態の商品URLは
index.php?route=product/product&product_id=42のようになります。読みやすいURLを有効にするには、設定変更とファイル名変更(.htaccess.txtから.htaccess)という2つの手順が必要です。どちらかを欠くと、整えたURLで「404 Not Found」が返ります。 - SEOキーワード。 OpenCartは商品名からURLスラッグを自動生成しません。商品、カテゴリー、ページごとにキーワードを入力します。
- XMLサイトマップ。 OpenCart 3には組み込み機能がありましたが、OpenCart 4では削除されました。現在は拡張機能が必要です。
- リッチリザルトと多言語タグ。 Googleの商品評価に使う構造化データや、表示すべき言語版を伝えるhreflangはOpenCart本体にありません。どちらも拡張機能またはカスタムコードが必要です。
特に誤解されやすい点
早めに否定しておきたい誤解が2つあります。1つ目は、「Use SEO URL」を有効にするだけで十分だという誤解です。ファイル名の変更は別の手順であり、これを忘れることがフレンドリーURL障害の最大の原因です。2つ目は、OpenCartにカノニカルタグがないため「カノニカル修正」拡張機能が必要だという誤解です。コアはすでにタグを追加し、「同じ商品が2つのカテゴリーに属する」という典型的な問題にも対応しています。壊れていないものを直すために費用を払う必要はありません。
SEO URLを有効にする正確な2手順、カノニカルのソースコード上の根拠、OpenCart 3から4で起きたサイトマップの後退、コアにないスキーマとhreflangの追加方法まで知りたい場合は、Advancedタブへ切り替えてください。
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 repositoryTL;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はコアにまったくありません。
全体像:ネイティブ機能、設定で有効にする機能、拡張機能
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.org、application/ld+json、itempropを検索しましたが、一致は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のエンジン層にもhreflangやrel=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とホスト型プラットフォームの率直な比較
| OpenCart | Shopify/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ストアは他の基盤と十分に競えます。
AIによる要約
Advanced版の要点を簡潔にまとめます。
- OpenCartはセルフホスト型のオープンソースPHP ECプラットフォームです。 サーバーへ完全にアクセスできるため上限は高い一方、SEOの多くが初期状態で無効なので最低水準は低めです。Shopify/BigCommerceとは逆の特性です。
- SEO URLには2つの手順が必要です。
Use SEO URL = Yesの設定と、mod_rewriteを有効にしたうえで.htaccess.txtを.htaccessへ変更します。どちらかを欠くとNot Foundエラーになります。改名要件は現在も有効で、メジャーバージョン更新のたびにファイルが再同梱されるため、アップグレード時の落とし穴でもあります。 - SEOキーワードは初期状態で空欄の手入力項目です。 商品名からの自動スラッグ生成はありません。大規模カタログ向けに自動スラッグ拡張機能が存在するのはこのためです。
- カノニカルタグはネイティブ実装です。 商品・カテゴリーページでソース確認済みで、商品のカノニカルは常にフラットな
product_idルートを指します。複数カテゴリーの商品はすでにカノニカル上安全であり、「カノニカル拡張機能を入れる」という助言の多くは不要です。注意点として、カテゴリーのページ分割は&page=N付きで自己参照します。 - XMLサイトマップはバージョン依存です。 OpenCart 3にはGoogle Sitemapフィードがありましたが、OpenCart 4では削除されました。Marketplaceの拡張機能が必要です。
- robots.txt は並べ替え、フィルター、ページ分割パラメーターを防ぐ静的な既定ファイルとして同梱されます。
Sitemap:行はなく、自動更新もされません。OpenCart 3と4では既定ルールが分岐しているため、実際に使うファイルを監査してください。 - 構造化データとhreflangはコアにまったくありません。 どちらも拡張機能またはカスタムテーマが必要で、WooCommerce、Shopify、BigCommerceより大きなネイティブ機能の欠落です。
- ヘッドレス: 公式APIはありますが、公式PWA/SSR製品はありません。クロール可能性は実装会社の責任になります。
- ネイティブブログ(CMS → Articles): OpenCart 4.1.0.0(2025年1月)で追加され、記事ごとにMeta Title/Description/Keywordsを設定できます。WooCommerce/Shopifyに対するコンテンツマーケティング上の差を縮めました。
公式資料
この記事でソース確認した主張の根拠となる、OpenCartとGoogleの一次資料、およびOpenCartのソースコードです。
OpenCart
- SEO URL — 2段階の有効化、
.htaccessへの改名、Key/Value/Keywordの対応、キーワード規則、多言語の「技術的な側面」という記述。 - Server settings —
Use SEO URLs設定と、読みにくいURLの公式例。 - General settings(メタタグ) — ストア単位のMeta Title/Description/Keywords欄。
- API — カスタム/ヘッドレスフロントエンド用の認証情報システム。
OpenCartのソースコード(GitHub — 最も確度の高い資料)
.htaccess.txt(v4) —.htaccess.txtとして同梱され、ファイル自体に改名手順が書かれています。robots.txt(v4)と(v3) — 静的な既定ファイル。両バージョンは分岐しており、v4にはfilter_group、v3にはproduct/searchルールがあります。実際のバージョンを確認してください。- 商品コントローラー — フラットな商品ルートへ向けるネイティブの
addLink(..., 'canonical')。 - カテゴリーコントローラー — ネイティブカノニカル。ページ分割では
&page=Nが付きます。 - 言語コントローラー — ドロップダウン切り替えで、hreflang処理はありません。
- Google Sitemapフィード(v3のみ) — OpenCart 3には存在し、OpenCart 4では削除されています。
- サイトマップの作成と送信 — サイトマップの意義と、50 000 URL/50 MBという上限。
- 重複URLの統合(カノニカル化) — カノニカルはヒントであること、および並べ替え/フィルターが典型的な重複元であること。
出典からの引用
OpenCart自身の資料とGoogleによる記録上の発言です。各検索エンジンのリンクは引用箇所へ直接移動します。OpenCart資料の引用は、Official Docsに挙げたページから原文どおり転載しています。
OpenCart — SEO URL(公式資料)
- “Set to Yes to enable friendly URLs (e.g.,
/iphoneinstead of/index.php?route=product/product&product_id=42).” (翻訳) 「フレンドリーURLを有効にするにはYesに設定します(例:/index.php?route=product/product&product_id=42ではなく/iphone)。」— 未設定URLの変更前後を示す例。 - “Apache: Rename
htaccess.txtto.htaccessin your root directory and ensuremod_rewriteis enabled.” (翻訳) 「Apacheでは、ルートディレクトリのhtaccess.txtを.htaccessへ変更し、mod_rewriteが有効であることを確認してください。」— 設定スイッチとは別に必要な2つ目の手順。 - “SEO URLs require proper server rewrite configuration. Without it, your friendly URLs will return 404 ‘Not Found’ errors.” (翻訳) 「SEO URLには適切なサーバーリライト設定が必要です。設定がなければ、フレンドリーURLは404『Not Found』エラーを返します。」— 改名を省くと壊れる理由。
- “Keywords MUST be unique for each store/language combination.” (翻訳) 「キーワードはストアと言語の組み合わせごとに必ず一意でなければなりません。」および “Changing an existing keyword will break old links. Set up 301 redirects if necessary.” (翻訳) 「既存のキーワードを変更すると古いリンクが壊れます。必要に応じて301リダイレクトを設定してください。」— 特に問題になりやすい2つのキーワード規則。
- “OpenCart automatically handles the technical SEO aspects of multi-language URLs, but you must provide the localized keywords.” (翻訳) 「OpenCartは多言語URLの技術的なSEO面を自動処理しますが、ローカライズされたキーワードは利用者が指定する必要があります。」— hreflang対応だと誤読される文ですが、ソースにはhreflangタグがありません。
OpenCart — API(公式資料)
- “This enables integrations with inventory systems, ERP software, mobile apps, custom frontends, and other third-party services.” (翻訳) 「これにより、在庫システム、ERPソフトウェア、モバイルアプリ、カスタムフロントエンド、その他の第三者サービスとの統合が可能になります。」— ヘッドレス構築に使う公式API。
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: it doesn’t guarantee that Google will download the sitemap or use the sitemap for crawling URLs on the site.” (翻訳) 「サイトマップの送信は単なるヒントであり、Googleがサイトマップをダウンロードしたり、サイト上のURLのクロールに使ったりすることを保証しません。」 引用箇所へ
- “indicating a canonical preference is a hint, not a rule.” (翻訳) 「カノニカルの優先指定はヒントであり、規則ではありません。」 引用箇所へ
- “the results of sorting and filtering functions of a category page”
(翻訳) 「カテゴリーページの並べ替え機能やフィルター機能による結果」— Googleが挙げる典型的なECの重複元であり、OpenCartの既定の
robots.txtが防ぐ対象です。 引用箇所へ
#:~:text=フラグメントアンカーを公開していません。そのため、引用は深いアンカーではなくページへリンクしています。ソースコードに関する主張(カノニカル呼び出し、同梱の.htaccess.txtとrobots.txt、hreflangとスキーマの不在)は、Official Docsに挙げたタグ付きGitHubファイルで直接確認しています。 OpenCart固有のSEO監査チェックリスト
OpenCart固有の問題が起こりやすい項目から、影響度順に並べています。
影響大 — OpenCart固有の落とし穴
-
Use SEO URLをYesに設定(System → Settings → Server)。設定しないと、すべてのURLがクエリ文字列のままです。 -
.htaccess.txtを.htaccessへ変更し、mod_rewriteを有効化。これは「SEO URLが404を返す」原因になる別手順です。更新時に再同梱されてファイルを上書きする可能性があるため、アップグレードのたびに再確認します。 - 商品、カテゴリー、情報ページごとにSEOキーワードを入力。 自動スラッグはなく、空欄では
product_id=URLへ戻ります。 - XMLサイトマップを用意。 OpenCart 3にはGoogle Sitemapのネイティブ設定(Extensions → Feed)がありますが、OpenCart 4にはMarketplace拡張機能が必要です。Google Search ConsoleとBing Webmaster Toolsへ送信します。
- ネイティブカノニカルを検証。 商品/カテゴリーページが
rel=canonicalを出力することを確認します。コアがすでに対応する問題の「修正」のためにカノニカル拡張機能を入れないでください。
標準設定
-
robots.txtを手動確認。Sitemap:行を追加し、並べ替え/フィルター/ページ分割パラメーターを引き続き防ぎ、インデックスしたいものをブロックしていないことを確認します。 - ストア単位のメタタイトル/説明をフォールバックとして設定し、Meta Keywordsは空欄にします。
- 重要な商品やカテゴリーごとに、ストアの既定値とは異なる固有のページタイトルとメタディスクリプションを設定します。
- SEOキーワードを変更する場合は301リダイレクトを計画します。キーワード変更は旧URLを壊します。
OpenCartにないもの — 追加が必要
- 構造化データを拡張機能またはテーマのJSON-LDで追加します。コアは何も出力しません。商品ページにはProduct/Merchant Listing、カテゴリーページにはBreadcrumbListを実装します。
- 多言語の場合は、拡張機能またはテーマ編集でhreflangを追加します。コアにはなく、言語ドロップダウンはhreflangではありません。
- ヘッドレスの場合は、カスタムフロントエンドのSSR、レンダリング、クロール可能性を検証します。OpenCartは公式PWA/SSR保証を提供しません。
判断のためのモデル
1. 3つの区分:ネイティブ/設定スイッチ/拡張機能。
OpenCartのSEO作業は、ネイティブで正しく動くもの(カノニカル、既定のrobots.txt、メタ項目)、ネイティブだが無効のもの(SEO URL、SEOキーワード)、コアにないもの(OC4のサイトマップ、構造化データ、hreflang)のいずれかです。区分を知れば、検証、有効化、実装のどれが必要か分かります。
2. 上限は高く、最低水準は低い。 OpenCartはSaaS型の逆です。Shopify/BigCommerceは高い最低水準と制限された上限を提供しますが、OpenCartは最低水準が低く、上限がありません。サーバーを所有するため制約はありませんが、基盤が最低水準を自動で引き上げてはくれません。
3. SEO URL=設定スイッチ×改名。 両方が必須で、片方だけではNot Foundエラーになります。単一の設定ではなく2要素からなる1つのゲートとして扱い、アップグレードで改名状態が戻る可能性があるため毎回確認します。
4. 拡張機能を買う前に検証する。 OpenCart Marketplaceには、コアがすでに解決している問題向けの拡張機能もあります。代表例がカノニカルです。費用を払い、ネイティブのカノニカルが処理済みの重複を「修正」する前に、同梱動作かこの記事を確認してください。
5. サイトマップの回答にはバージョンを付ける。 「OpenCartにサイトマップはあるか」には単一の回答がありません。OC3では「ある」、OC4では「ない」が正解です。OC4ではOC3にあった機能が目立たず削除されているため、組み込みSEO機能に関する主張にはバージョンを明記します。
OpenCart SEO早見表
管理画面内の場所
| 設定 | 場所 |
|---|---|
| Use SEO URL設定 | System → Settings → Server |
| ストア単位のメタタグ | System → Settings → General |
| エンティティごとのSEOキーワード | 商品/カテゴリー/ページ固有のSEOタブ(またはDesign → SEO URL) |
| Google Sitemapフィード(OC3のみ) | Extensions → Feed → Google Sitemap |
| API認証情報(ヘッドレス) | System → Users → API |
SEO URLの2段階設定
Use SEO URL→ Yesにして保存。mod_rewriteを有効にし、.htaccess.txt→.htaccessへ変更(省くとNot Foundエラー)。
ネイティブか欠落か — 早見表
| 機能 | コアにあるか |
|---|---|
| カノニカルタグ(商品+カテゴリー) | はい |
既定のrobots.txt(並べ替え/フィルター/ページ分割を防止) | はい |
| メタタイトル/説明(ストア+各エンティティ) | はい |
| フレンドリーURL | はい。ただし無効(設定+改名) |
| 名前からの自動スラッグ | いいえ(キーワードは手入力) |
| XMLサイトマップ | OC3はあり/OC4はなし |
| 構造化データ/スキーマ | いいえ |
hreflang/rel=alternate | いいえ |
未設定の商品URL: index.php?route=product/product&product_id=42
避けること
Use SEO URLを有効にしただけで止めない。.htaccessへの改名は別手順です。- アップグレード後も
.htaccessがそのままだと思わない。.htaccess.txtとして再同梱されます。 - コアがすでに対応しているか確認せず、カノニカル拡張機能を入れない。
- 「技術的なSEO面を処理する」という文をhreflang対応だと解釈しない。hreflangはありません。
- OpenCart 4で「OpenCartには組み込みサイトマップがある」という説明を信じない。削除されています。
OpenCart SEO向けツール
- Google Search Console — サイトマップを送信し、URL検査でフレンドリーURLが404ではなく解決されることと、ネイティブカノニカルが期待どおりであることを確認し、ページのインデックス登録で重複URLパターンを監視します。
- Bing Webmaster Tools — 2つ目のサイトマップ送信先とクロール管理。Bingは宣言されたカノニカルを比較的文字どおり扱う傾向があるため、カスタムOpenCartテーマの誤ったカノニカルは特に危険です。検証してください。
- Screaming Frog/Ahrefs Site Audit — ストアをクロールし、キーワード未入力で残る
product_id=URL、キーワード変更後のリダイレクトチェーン、カノニカルがないカテゴリーページ、robots.txtによる意図しないブロックを検出します。 - Rich Results Test/Schema Markup Validator — コアには構造化データがないため、拡張機能またはテーマコードで追加したスキーマが有効で適格か確認します。
- OpenCartサイトマップ拡張機能(OC4)— OpenCart 4でサイトマップを生成するために必要です。導入前にOpenCart Marketplaceで現在の掲載状況と価格を確認します。
- 自動スラッグ拡張機能 — コアでは空欄のSEOキーワードを商品名からカタログ規模で生成します。
- PageSpeed Insights/Lighthouse — OpenCartのサーバーレンダリング出力は初期状態でもクロール可能ですが、セルフホストではサーバー応答時間も自分の責任です。特にヘッドレス化の前後で測定してください。
参照する価値のある資料
サイト内の関連記事
- カノニカル化 — OpenCartのネイティブな商品/カテゴリーのカノニカルと、ページ分割時の注意点の仕組み。
- ファセットナビゲーション — OpenCartの既定の
robots.txtが抑えようとする並べ替え/フィルターのクロール問題を、プラットフォーム横断で解説。 - hreflang — OpenCartコアが出力しない多言語タグの追加方法。
- JavaScript SEO — OpenCartをヘッドレス運用する場合に自分で守る必要があるレンダリング原則。
OpenCart公式
- SEO URL資料とServer settings — 管理画面の両側から説明する2段階の有効化手順。
- GitHubのOpenCart — 同梱ソース。各バージョンで「これはネイティブか」を最短で確認できます。
- サイトマップの作成と送信とカノニカル化 — 上記のサイトマップとカノニカル節の根拠となる一般ガイダンス。
業界の資料
- Numinix — OpenCart SEOの改善方法 — 実務者向けの幅広いヒント集。主にOpenCart 3向けなので、サイトマップに関する主張は利用中のバージョンと照合してください。
- Webkul — OpenCart SEO改善ガイド — よくあるOpenCart SEOの不足をまとめた拡張機能ベンダーの概要。
- Matt Jackson — OpenCartのカノニカルと重複コンテンツ — この記事のカノニカル節が反論する重複コンテンツの捉え方。ソースで確認した動作と並べて読むと役立ちます。
- iSenseLabs — OpenCartの重複コンテンツ問題を解決する — 複数カテゴリーによる重複の議論。カノニカルコントローラーが実際に行う処理と照合してください。
防ぐべきOpenCart SEOのミス
一般論ではなく、OpenCartで実際に起きるため予防すべきミスです。
「Use SEO URL」を有効にしただけで止める
誤り: System → Settings → ServerでUse SEO URLをYesに設定し、これだけでフレンドリーURLが機能すると思うこと。
誤っている理由: 設定スイッチがOpenCartへ指示するのは、フレンドリーURLを生成することだけです。実際に配信するには、サーバー側にもmod_rewriteルールが必要です。このルールは.htaccess.txtという名前で同梱され、Apacheはその名前のままでは読み込みません。改名を省くと、すべてのフレンドリーURLがNot Foundエラーになります。
代わりに行うこと: 設定スイッチと.htaccess.txt → .htaccessへの改名を、2要素からなる1つのゲートとして扱います。両方を済ませ、次へ進む前に商品URLを抜き取り確認してください。メジャーバージョン更新ではファイルが再同梱され、カスタマイズ済みの.htaccessを知らないうちに上書きする可能性があるため、更新のたびに再検証します。
重複コンテンツを「修正」するためにカノニカル拡張機能を導入する
誤り: 1つの商品が2つのカテゴリーに掲載されているのを見て、OpenCartにはカノニカル対応がないと思い、カノニカルタグ拡張機能へ費用を払うこと。
誤っている理由: OpenCartの商品・カテゴリーコントローラーはすでにaddLink(..., 'canonical')を呼び出し、商品のカノニカルは流入カテゴリーにかかわらず、フラットなproduct/product&product_id=Xルートへ解決されます。コアは複数カテゴリーによる典型的な重複商品問題をすでに無効化しており、その拡張機能は実際には壊れていないものを修正することになります。
代わりに行うこと: 何かを購入する前に、レンダリング後の<head>を確認するか、カノニカルチェッカーでURLを検査します。費用は、構造化データやhreflangなど、コアに本当にない機能へ使ってください。
OpenCart 4にもOpenCart 3と同じサイトマップがあると思い込む
誤り: どのバージョン向けに書かれたか確認せず、OpenCartには「組み込みサイトマップがある」という古いガイドを信じること。
誤っている理由: OpenCart 3にはネイティブのGoogle Sitemapフィードコントローラーがありました。OpenCart 4では完全に削除され、同梱ソースに相当するコントローラーはありません。サイトマップ拡張機能を追加していないOC4ストアは、XMLサイトマップなしで静かに稼働しています。
代わりに行うこと: まずOpenCartのメジャーバージョンを確認します。4を使っている場合は、サイトマップがあると思い込まず、Marketplaceのサイトマップ拡張機能を導入してください。
カタログ全体でSEOキーワードを空欄にする
誤り: WooCommerceやShopifyのように商品名からスラッグが生成されると思い、SEO URLを有効にした後も商品ごとのSEOキーワード欄を空のままにすること。
誤っている理由: OpenCartのキーワード欄は手入力で、初期状態は空です。キーワード未入力の商品は、Use SEO URLを有効にしていてもindex.php?route=product/product&product_id=XURLへそのまま戻ります。実際は空欄が原因なのに、設定全体が壊れているように見えます。
代わりに行うこと: 少なくとも売れ筋の商品とカテゴリーには手作業でキーワードを設定し、カタログ全体にはMarketplaceの自動スラッグ拡張機能を使います。後からキーワードを変更する場合は旧スラッグから301リダイレクトを設定してください。変更すると旧URLが壊れます。
「技術的なSEO面を処理する」をhreflang対応だと解釈する
誤り: OpenCart自身の*“automatically handles the technical SEO aspects of multi-language URLs”* (翻訳) 「多言語URLの技術的なSEO面を自動処理する」という文を読み、hreflangタグもすでに出力されていると結論付けること。
誤っている理由: この文は言語切り替えURLの仕組みを説明しており、<link rel="alternate" hreflang="x">タグのことではありません。同梱の言語コントローラーが作るのはドロップダウンのリストで、OpenCartのエンジン層にはhreflangやrel=alternateを生成する処理がありません。
代わりに行うこと: 多言語ストアでは、テーマ編集または拡張機能を使って実際のhreflangタグを追加し、本当にレンダリングされることを確認します。「技術的なSEO面」という文を、タグが存在する証拠にしないでください。
OpenCart SEOの変更が実際に反映されたことを証明する
上記の変更に対応する合否テストです。公開時に一度だけではなく、それぞれの変更を行った直後に実行してください。
フレンドリーURLが実際に解決される
実行するテスト: フレンドリーな商品URLまたはカテゴリーURLへ直接リクエストします。curl -I https://yourstore.com/your-product-keywordを実行するか、/tools/http-status-checker/へ貼り付けます。
期待する結果: フレンドリーURL自体がHTTP/1.1 200 OKを返し、旧クエリ文字列URL(?route=product/product&product_id=X)も正常に解決またはリダイレクトされます。両方がエラーになる状態は不合格です。
失敗時の解釈: フレンドリーURLが404になる場合、Use SEO URLが未設定、.htaccess.txtの改名が未実施、またはサーバーでmod_rewriteが無効のいずれかです。
監視期間: 有効化直後に確認し、改名状態が知らないうちに戻る可能性があるため、更新後にも再確認します。
ロールバック条件: 2つの手順を再確認しても404が続く場合は、サーバーリライトを調査する間もストアがクエリ文字列URLで動くよう、Use SEO URLを一時的にNoへ戻します。
ネイティブカノニカルが存在し、正しいURLを指す
実行するテスト: 2つ目のカテゴリー経由で商品へアクセスし、/tools/canonical-checker/でカノニカルを確認します。
期待する結果: どのカテゴリー経由で到達しても、カノニカルが同じフラットなproduct/product&product_id=Xルートへ解決されます。
失敗時の解釈: カノニカルがない、または誤っている場合、通常はコアが出力を停止したのではなく、テーマのカスタマイズがネイティブのaddLink()呼び出しを上書きまたは削除しています。
監視期間: 変更直後、および商品・カテゴリーテンプレートを編集した後。
ロールバック条件: 最近のテーマ変更がカノニカルを削除または破損した場合、上からカノニカル拡張機能を追加せず、その特定のテーマ変更を元に戻します。
robots.txtが適切な対象を防ぎ、サイトマップを宣言する
実行するテスト: 公開中のrobots.txtを/tools/robots-txt-tester/で検査します。
期待する結果: 並べ替え、フィルター、ページ分割向けの既定のDisallowルールが残り、サイトマップがある場合はSitemap:行が公開URLを指します。
失敗時の解釈: Sitemap:行がない場合は、初期状態で同梱されないため追加されていません。インデックスしたいページをブロックするルールがある場合は、手動編集が過剰です。
監視期間: robots.txtを編集または復元した直後。
ロールバック条件: Google Search Consoleでインデックスしたいページがrobots.txtによりブロックされたと表示され始めたら、原因となるルールを元に戻します。
サイトマップが有効で、インデックス対象だけを掲載する
実行するテスト: サイトマップURLを/tools/sitemap-validator/へ送信します。特にOpenCart 4へサイトマップ拡張機能を追加した後に実行してください。
期待する結果: 有効なXMLで、50 000 URL/50 MB未満に収まり、カノニカルかつインデックス可能な商品・カテゴリーURLだけを掲載します。フィルター、カート、決済のパラメーターURLは含めません。
失敗時の解釈: XMLが無効、またはフィードにパラメーターURLが含まれる場合、拡張機能の設定調整が必要です。
監視期間: 生成直後と、大規模なカタログ変更後に定期確認します。
ロールバック条件: Google Search Consoleのサイトマップレポートにエラーが出る、またはサイトマップ経由でインデックスされたページが継続的に減る場合は、壊れたサイトマップを送信したままにせず、拡張機能を無効化または再設定します。
追加した構造化データが有効で、リッチリザルトの対象になる
実行するテスト: 拡張機能またはテーマコードでProduct/Merchant Listingスキーマを追加した後、商品ページを/tools/schema-validator/または/tools/rich-result-eligibility/で確認します。
期待する結果: 重大なエラーのない有効なJSON-LDで、狙うリッチリザルトに必要なプロパティを含みます。Merchant Listingsでは価格/在庫状況、Product Snippetsでは評価/レビューが対象です。
失敗時の解釈: 構文エラーや必須プロパティの欠落がある場合、Googleが適格性を検討する前に、拡張機能または手書きJSON-LDを修正する必要があります。
監視期間: マークアップの追加直後と、価格または在庫状況データを同期した後。
ロールバック条件: Google Search Consoleの拡張レポートで無効な項目が急増した場合は、壊れたスキーマを公開したままにせず、修正までマークアップを取り下げます。
理解度チェック:OpenCart SEO
OpenCartでSEOがどのように動くかを確認する5問です。各問の回答を選び、答えを確認してください。
変更履歴
2026年8月13日に更新。
編集概要と記録された変更の詳細。変更の詳細
-
変更の詳細な注記は現在英語でのみ提供されています。
-
変更の詳細な注記は現在英語でのみ提供されています。
-
変更の詳細な注記は現在英語でのみ提供されています。
-
変更の詳細な注記は現在英語でのみ提供されています。
完全な比較は利用できません — この改訂の以前のスナップショットがアーカイブされていません。
2026年7月19日に更新。
編集概要と記録された変更の詳細。変更の詳細
-
変更の詳細な注記は現在英語でのみ提供されています。
-
変更の詳細な注記は現在英語でのみ提供されています。
-
変更の詳細な注記は現在英語でのみ提供されています。
完全な比較は利用できません — この改訂の以前のスナップショットがアーカイブされていません。