Мы боролись с проблемой перенаправления 301 и не могли видеть лес за деревьями. Очень надеюсь, что кто-то может помочь.
У меня более 400 старых URL-адресов, которые нам нужно перенаправить на новые URL-адреса. Однако я изменил htaccess, чтобы создать чистый URL-адрес на новом сайте, и не уверен, вызывает ли это проблему или я делаю что-то еще не так.
Чтобы очистить URL-адреса на новом сайте, я добавил в файл htaccess следующее:
RewriteEngine On
RewriteRule ^([0-9]+) category?cat=$1 [NC,L,QSA]
Это для того, чтобы вместо www.mysite/category?cat=1 я мог иметь www.mysite/1 и-add-other-information
Теперь я пытаюсь выполнить перенаправление для 400 URL-адресов, например:
RewriteRule ^category?cat=1 1/and-add-other-information [R=301,NC,L,QSA]
RewriteRule ^category?cat=2 1/and-different-information [R=301,NC,L,QSA].
Я знаю, что флаг L имеет значение, и пробовал это с и без.
Я надеюсь это имеет смысл.





QueryString не является частью соответствия в шаблоне RewriteRule.
Вам необходимо использовать директиву RewriteCond и сопоставить ее с переменной %{QUERY_STRING}, как показано ниже:
RewriteEngine on
RewriteCond %{QUERY_STRING} ^cat=1$
RewriteRule ^category$ /and-add-other-information? [R=301,NC,L,QSA]
Спасибо за ваш ответ. К сожалению, не думаю, что я дал это так ясно, как следовало бы. У меня есть старый набор URL-адресов, которые должны быть переадресацией 301 с дополнительной информацией, отсутствующей в старом URL-адресе. OLD url category? Cat = 1 NEW url / 1 / and-then-info-related-to-the-get. У меня есть список как таковой: category? Cat = 1 замените на url / 1 / this-items-name-is-X. category? cat = 2 замените на url / 2 / this-service-name-is-Y. category? cat = 3 замените на url / 3 / this-items-name-is-Z.