Назад | Перейти на главную страницу

Как вы перенаправляете URL-адреса Joomla со строкой запроса на другой хост?

У меня есть сайт Joomla, и я пытался сделать перенаправление URL-адресов с запросом, поэтому, когда кто-то вводит

https://example.com/index.php/news/item/some-news 

они перенаправляются на

http://new.example.com/index.php/news/item/some-news

Я пробовал этот код, но не работает

RewriteCond %{HTTP_HOST} =example.com [NC]
RewriteCond %{QUERY_STRING} (news/item)
RewriteRule ^$ http://new.example.com/?%{QUERY_STRING} [R=301,L]
https://example.com/index.php/news/item/some-news 

Ни в одном из опубликованных вами примеров URL-адресов нет строки запроса, поэтому пытайтесь сопоставить QUERY_STRING серверная переменная непременно завершится ошибкой. Вы также пытаетесь сопоставить пустой URL-путь (т.е. ^$) - так что это не сработает с самого начала. Часть URL-адреса, который вы пытаетесь сопоставить, похоже, дополнительная информация о пути (он же «информация о пути»). Другими словами, дополнительный URL-путь после существующего имени файла.

Любопытно, однако, что вы, похоже, пытаетесь перенаправить на строку запроса в своем RewriteRule директива? Вы также перенаправляетесь на HTTP (из HTTPS) - это намеренно?

На Apache вы можете либо изучить PATH_INFO серверной переменной или просто совпадать как часть обычного URL-пути с помощью RewriteRule шаблон. Итак, одно из следующих должно работать:

RewriteCond %{HTTP_HOST} =example.com [NC]
RewriteCond %{PATH_INFO} ^/news/item/
RewriteRule ^index\.php http://new.example.com%{REQUEST_URI} [R=302,L]

ИЛИ,

RewriteCond %{HTTP_HOST} =example.com [NC]
RewriteRule ^index\.php/news/item/ http://new.example.com%{REQUEST_URI} [R=302,L]

Согласно вашей директиве, условие этого перенаправления просто соответствует /index.php/news/item/<anything>. И перенаправляет на тот же URL-путь в целевом домене.

Это 302-е (временное) перенаправление. Измените это на 301 (постоянное) перенаправление только после того, как подтвердите, что он работает нормально. Это сделано для того, чтобы браузер не кешировал ошибочные перенаправления во время тестирования.

Перед тестированием вам необходимо очистить кеш браузера.