301 I reindirizzamenti non funzionano con index.php in vecchi URL
-
28-09-2020 - |
Domanda
Ho spostato il mio vecchio negozio a Magento, sto usando 1.9.2 CE Magento.Il vecchio negozio era attivo e funzionante per anni e non volevo perdere gli URL SEO, quindi quando provo a fare 301 reindirizzamenti, sto affrontando un problema.
Se il vecchio URL ha Index.php in esso, quindi invece di reindirizzare al nuovo URL, i reindirizzamenti Magento alla homepage.
Ho provato a farlo con la riscrittura URL predefinita Magento, con un'estensione di terze parti e ha provato anche Htaccess.Sempre lo stesso risultato.
Ad esempio:
In seguito al codice in .htaccess
Redirect 301 /index.php?main_page=product_info&products_id=161 http://domain.com/catalogsearch/result/?q=sku-161 --- This redirects to homepage (Doesnt work properly)
Redirect 301 /main_page=product_info&products_id=331 http://domain.com/catalogsearch/result/?q=sku-331 --- This redirects to new URL (Works Properly)
.
Problema è che, tutti i miei vecchi url hanno index.php?In esso, quindi ho bisogno di farlo funzionare in qualche modo.
Qualche idea?
Grazie :)
Soluzione
Disattiva la direttiva di reindirizzamento in un file .htaccess non corrisponderà alla stringa di query, solo l'URI della richiesta (la parte prima del punto interrogativo).Per abbinare la stringa di query, dovrai utilizzare le direttive di riscrittura e riscrittura.Maggiori informazioni su questo qui: https://simonecarletti.com/blog/2009/01 / Apache-Query-string-reindirizzamento /
Questo dovrebbe funzionare nel .htaccess
RewriteEngine On
RewriteCond %{QUERY_STRING} ^main_page=product_info&products_id=331$
RewriteRule ^index\.php$ http://gearx.local/catalogsearch/result?q=sku-331 [R=301,L]
.
Se tutti gli URL necessari per reindirizzare sono nello stesso formato con un ID numerico, queste due linee dovrebbero prendersi cura di tutti:
RewriteCond %{QUERY_STRING} ^main_page=product_info&products_id=([0-9]+)$
RewriteRule ^index\.php$ http://gearx.local/catalogsearch/result?q=sku-%1 [R=301,L]
.
Si consiglia di reindirizzare all'URL effettivo del prodotto anche se piuttosto che una pagina dei risultati di ricerca.