fix(magento-store): redirect product URLs without /p/ prefix to product route#2581
fix(magento-store): redirect product URLs without /p/ prefix to product route#2581hnsr wants to merge 1 commit into
Conversation
…ct route When visiting a product URL without the configured product route prefix (e.g., /my-product instead of /p/my-product), the redirectOrNotFound function would return a 404 even though Magento's route resolver successfully identified it as a product. The issue occurs when relative_url equals the incoming URL - no redirect was triggered because the code only redirected when relative_url !== from. However, for products accessed without the /p/ prefix, we still need to redirect to the product route even when the URL key matches. This fix adds a check: if the route resolver finds a product but there's no explicit redirect URL (relative_url === from), redirect to the product route anyway.
|
|
@hnsr is attempting to deploy a commit to the Reach Digital Team on Vercel. A member of the Team first needs to authorize it. |
|
We hit an infinite redirect loop with this patch in production. Posting the ScenarioA configurable product is enabled in Magento, but all of its simple variants What happens
Why it can't be fixed inside
|
Summary
When visiting a product URL without the configured product route prefix (e.g.,
/my-productinstead of/p/my-product), theredirectOrNotFoundfunction returns a 404 even though Magento's route resolver successfully identifies it as a product.The Problem
The issue is in the redirect logic. When
relative_url === from(which is the case when accessing/my-product),redirectUrlisundefined, and the code falls through tonotFoundeven though:The Fix
Added a check after the existing redirect logic: if no explicit redirect URL exists but the route is identified as a product type, redirect to the product route anyway.
Test plan
/p/prefix (e.g.,/my-product-slug)/p/my-product-slug