Markus Michalski FAQ

Sylius SEO Suite Pro: Troubleshooting

Troubleshooting for Sylius SEO Suite Pro: robots.txt, SEO fields, setup, hreflang, JSON-LD, OG images, audit, redirects and the 404 log with symptom, check, solution, plus known limitations and FAQ.

Deutsche Version

Back to overview

Sylius SEO Suite Pro: Troubleshooting

This page lists typical problems in the pattern Symptom, Check, Solution. Every statement comes from the behaviour of the plugin code. The basics are in the installation and configuration pages.

Almost every plugin feature falls back silently to the default behaviour when a table is missing or something fails, and writes a warning to the log. For any problem, look in your environment's log first and search for mmd/sylius-seo-suite-pro-plugin.

/robots.txt returns 404 or not the expected content

Symptom: /robots.txt answers with 404, with a file from the web root, or with User-agent: * and Allow: /, although you maintained custom content in the admin.

Check:

Solution: Import @MmdSyliusSeoSuiteProPlugin/config/routes/shop.yaml at the top level (see installation), remove a static public/robots.txt, maintain the content in the channel settings (see configuration) and purge the cache in front if needed.

SEO fields are missing in the product or category form

Symptom: The admin has no fields for meta title, canonical override and robots on products and categories. Categories also lack the meta description.

Check:

Solution: Follow the opt-in guide in the installation, create the migration for your translation tables and clear the cache afterwards (bin/console cache:clear).

The setup command aborts

Symptom: bin/console mmd:seo-suite-pro:setup ends with an error, or the plugin tables do not exist afterwards.

Check:

Solution: Run bin/console doctrine:migrations:migrate first and then the setup command again. Enable the bundle in config/bundles.php. The plugin does not work on database platforms other than MySQL or MariaDB (see Known limitations). If an admin screen shows an error after an update, a table is usually missing: run the setup command after every plugin update.

The admin sidebar entry is missing

Symptom: The admin navigation shows no MMKreativ Plugins group, or the group without the SEO Suite Pro entry.

Check:

Solution: Import the admin routes, clear the cache and reload the admin. All other screens (templates, redirects, hreflang, schema, audit, OG images) are reached through the buttons on the channel settings, not through separate menu items.

Symptom: The head of a product, category or home page lacks the <link rel="alternate" hreflang> tags.

Check:

Solution: Maintain hostnames and languages of the channels, adjust hreflang.min_alternates and the format, or give each channel different languages. Details are on the hreflang page.

GTIN, MPN or brand are missing in the JSON-LD

Symptom: The Product node contains no gtin8/gtin12/gtin13/gtin14, no mpn or no brand.

Check:

Solution: Create the attribute as text, fix code and value and check the result in the Shop API under structuredData. More under structured data.

OG images: 503, placeholder or normal product image

Symptom: The card URL under /seo/og/... answers with 503 or 404, redirects to the normal product image, or the card appears without the product image.

Check:

Solution: Install GD with FreeType (and WebP, or set format to auto or jpeg), allow the image host in remote_hosts or serve the images from a public address, and pre-render cards after imports or image changes with bin/console mmd:seo-suite-pro:og-image:generate. mmd:seo-suite-pro:og-image:prune removes old or orphaned files. See OG images.

The SEO audit is stuck or truncated

Symptom: An audit reports An audit of the channel "…" is already running., stays on Running in the dashboard, or ends with a note about the limit.

Check:

Solution: Wait for the stale time or shorten it, raise audit.max_subjects and run the audit as a cronjob with bin/console mmd:seo-suite-pro:audit:run. For missing tables run mmd:seo-suite-pro:setup. See audit.

Redirects do not fire

Symptom: A redirect exists, but the page still returns 404 or the wrong target.

Check:

Solution: Create the source as the real path in the right channel, check activation and the messages shown on save, and run mmd:seo-suite-pro:setup if tables are missing. See redirects.

The 404 log keeps growing

Symptom: The list of 404 paths gets very long or contains outdated entries.

Check:

Solution: Schedule bin/console mmd:seo-suite-pro:redirects:prune-log (default 90 days, adjustable with --days) as a cronjob, lower the limit if needed, or switch counting off with redirects.log_not_found: false. See redirects.

Canonical or noindex on filtered listings is surprising

Symptom: Filtered or sorted category pages are noindex, point their canonical to the base page, or a custom filter is not recognised.

Check:

Solution: Add your parameters to facet_parameters (include the defaults you want to keep) and set index and follow in the channel settings as needed. See configuration.

The page title stays unchanged

Symptom: The <title> still shows Sylius' default title.

Check:

Solution: Check the layout and the response type, and create an SEO template if needed.

Known limitations

FAQ

General

Does the plugin generate a sitemap? No. The plugin contains no sitemap generator. With SitemapExclusionInterface it only offers the exclusion logic (noindex, or a canonical pointing elsewhere) that a sitemap plugin can call. The optional mmd/sylius-sitemap-plugin is only suggested in composer.json.

How many installations does one licence cover? One Sylius installation with all its channels, plus its development and staging environments. Redistribution is not allowed, updates are included for 12 months from purchase. The LICENSE file is authoritative.

Is the plugin public? No, it is a private repository with a commercial licence.

Where do I find the settings? Under MMKreativ Plugins in the admin sidebar. All other screens are reached through the buttons on the channel settings.

Configuration

Where does configuration live? Global options sit under the key mmd_sylius_seo_suite_pro in config/packages/mmd_sylius_seo_suite_pro.yaml, all of them optional. Per-channel settings are maintained in the admin and stored in the database. Details in the configuration page.

Does the plugin read environment variables? No. All options come from the Symfony configuration and the database.

How is caching handled? The plugin keeps settings and templates in memory per request and resets them between requests. The robots.txt is publicly cacheable for one hour, card images for one year with immutable and an ETag derived from the content hash. After a plugin update, clear the Symfony cache with bin/console cache:clear, because the serializer stores its metadata there.

Which cronjobs do I need? mmd:seo-suite-pro:audit:run (nightly), mmd:seo-suite-pro:redirects:prune-log and mmd:seo-suite-pro:og-image:prune, and with OG images also mmd:seo-suite-pro:og-image:generate after imports. Run the setup command after installation and updates, not as a cronjob.

Compatibility

Which Sylius versions are supported? composer.json requires Sylius ^2.2, PHP ^8.3 and Symfony ^7.4. CI builds against Sylius 2.2 and 2.3.

Which API Platform versions? composer.json allows API Platform ^4.2.1 || ^5.0. CI covers Sylius 2.2 with API Platform 4.2 as well as Sylius 2.3 with API Platform 4.3 and 5.

Which databases? MySQL 8 and MariaDB only. CI runs against MySQL 8.4.

Does the plugin work with a headless frontend? Yes. Storefront and Shop API use the same SeoDataProviderInterface, so the two cannot drift apart. See Shop API.

Do I need GD for the plugin? Only for the optional OG images, with FreeType (WebP output additionally needs WebP support). Everything else works without GD.