Я пытаюсь сделать редирект 301 по этой ссылке в моем файле .htaccess.
Старый URL: https://www.example.com/?lang=en
Новый URL: https://www.example2.com/en/
Я попытаюсь использовать эту инструкцию:
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^lang=en$
RewriteRule ^(.*)$ /en/ [R=301,L]
как ответ на этот вопрос ( 301 перенаправление с URL со строкой запроса на новый домен с другой строкой запроса ),но мой результат таков: https://www.example2.com/en/?lang=en.
Как я могу удалить строку запроса "? lang = en" и получить новый URL?
Теперь это работает с добавлением флага QSD, но теперьУ меня есть эта проблема:
Мне тоже нужно перенаправить ссылки:
Старый URL 2: https://www.example.com/?lang=de
Новый URL 2: https://www.example2.com/de/
И это ссылки:
Старый URL-адрес 3: https://www.example.com/?lang=ru
Новый URL-адрес 3: https://www.example2.com/ru/
Если я использую приведенную выше инструкцию, изменив строку запроса,перенаправление не работает для всех языков.
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^lang=en$
RewriteRule ^(.*)$ /en/ [R=301,L,QSD]
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^lang=de$
RewriteRule ^(.*)$ /de/ [R=301,L,QSD]
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^lang=ru$
RewriteRule ^(.*)$ /ru/ [R=301,L,QSD]
Как я могу решить эту новую проблему?
РЕДАКТИРОВАТЬ 2:
Решение для @ QuickBecko
Естьдва решения, в зависимости от версии Apache:
Первое решение
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^lang=en$
RewriteRule ^(.*)$ /en/ [R=301,L,QSD]
RewriteCond %{QUERY_STRING} ^lang=de$
RewriteRule ^(.*)$ /de/ [R=301,L,QSD]
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^lang=ru$
RewriteRule ^(.*)$ /ru/ [R=301,L,QSD]
Второе решение
RewriteCond %{QUERY_STRING} ^lang=en$
RewriteRule ^(.*)$ /en/? [R=301,L]
RewriteCond %{QUERY_STRING} ^lang=de$
RewriteRule ^(.*)$ /de/? [R=301,L]
RewriteCond %{QUERY_STRING} ^lang=ru$
RewriteRule ^(.*)$ /ru/? [R=301,L]