Вопрос по redirect, .htaccess – 301 перенаправление с URL со строкой запроса на новый домен с другой строкой запроса

7

Я пытаюсь выяснить, как выполнить перенаправление 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>

Ваш Ответ

2   ответа
19

запроса, например:

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]

Проверять, выписыватьсяэта страница блога для получения дополнительной информации о том, как это работает.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Sherwin Flight
0

но все же более сложная, потому что мне нужно было отбросить другие параметры.

Как это: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]

Решение состоит в том, чтобы добавить".*?" до и после параметра для использования.

Я не знаю, является ли это лучшим решением, но оно работает.

Похожие вопросы