301 перенаправления не работают с index.php в старых URL
-
28-09-2020 - |
Вопрос
Я переместил свой старый магазин в Magento, я использую 1.9.2 CE Magento.Старый магазин был в курсе и беги в течение многих лет, и я не хотел потерять SEO URL, поэтому, когда я пытаюсь сделать 301 перенаправления, я сталкиваюсь с проблемой.
Если старый URL имеет index.php в нем, вместо перенаправления на новый URL, Magento перенаправляет на домашнюю страницу.
Я попытался сделать это с помощью URL Magento URL по умолчанию переписать, с третьим сторонним расширением и пробовала его с HTACCESS.Всегда тот же результат.
Например:
Следующий код в .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)
.
Проблема в том, что все мои старые URL имеют index.php?В этом, поэтому мне нужно сделать это как-то работу.
Есть идеи?
Спасибо :)
Решение
Оказывается, уникальная директива перенаправления в файле .htaccess не соответствует строке запроса, только запрос URI (часть до вопросительного знака).Чтобы соответствовать строке запроса, вам нужно использовать директивы Rewritecond и Rewriterile.Больше информации об этом здесь: https://simonecarletti.com/blog/2009/01 / apache-query-string-redirets /
Это должно работать в .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]
.
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]
.