Вопрос по redirect, .htaccess – 301 перенаправление с URL со строкой запроса на новый домен с другой строкой запроса
Я пытаюсь выяснить, как выполнить перенаправление 301 в моем файле htaccess, чтобы перенаправить некоторые файлы в новый домен. Вот что мне нужно знать, как это сделать:
СТАРЫЙ URL:http://www.example.com/index.php?page=news&id=2366
НОВЫЙ URL:http://www.example2.com/news.php?name=23546
Перенаправления не должны создаваться автоматически. Я могу жестко запрограммировать страницы, которые мне нужно перенаправить, в файл htaccess, я просто не знаю формат для использования, так как я прочитал, что это «стандарт» 301 перенаправление не будет работать со строками запроса.
По сути, это то, что я хочу сделать, но из моих исследований пока не получается, что это можно сделать таким образом.
<code>redirect 301 /index.php?page=news&id=2366 http://www.example2.com/news.php?name=23546 </code>
запроса, например:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/index.php$
RewriteCond %{QUERY_STRING} ^page=news&id=2366$
RewriteRule ^(.*)$ http://www.example2.com/news.php?name=23546 [R=301,L]
Проверять, выписыватьсяэта страница блога для получения дополнительной информации о том, как это работает.
но все же более сложная, потому что мне нужно было отбросить другие параметры.
Как это:my-old-page.php?a=1&b=2&c=3
Мне нужно использовать одну из строк и отбросить другие, но это решение сработало, только если я хочу использовать последний параметр (c = 3). Если я хочу использовать любой другой (a = 1 или b = 2), он запускается до 404. После долгих попыток и поиска я нашел ответ:
RewriteCond %{QUERY_STRING} ^.* ?b=2.* ?$ (without space after the *)
RewriteRule (.*) http://www.my-webpage.php/new-location-2? [R=301,L]
Решение состоит в том, чтобы добавить".*?"
до и после параметра для использования.
Я не знаю, является ли это лучшим решением, но оно работает.