Подскажите как записать синтаксис для параметрического редиректа?

Автор rz00007, 05-07-2012, 11:39:43

« назад - далее »

rz00007Topic starter

Добрый день.
В общем, имеются страницы вида site.ru/index.php?option=com_content&view=category&layout=blog&id=7&Itemid=11
Через обыкновенный Redirect 301 их записать нельзя т.к. в url передаются параметры: option=com_content&view=category&layout=blog&id=7&Itemid=11

Обратился к хостеру, они написали следующее:

Чтобы устранить проблему необходимо использовать RedirectMatch, либо RewriteCond RewriteRule, потому что директива Redirect не передаёт php параметры запроса, а работает только с URL.

у меня не получается их записать, подскажите как записать эти перенаправления используя RedirectMatch или RewriteCond RewriteRule? Спасибо!

Мы не смогли подобрать удобное Вам решение.
В данном случае, для корректной настройки редиректов, советуем обратиться к разработчикам.


В связи с этим прошу помощи у форумчан! Заранее, Спасибо!


Haosame

Может быть что-то в таком духе:

RewriteRule site.ru/index.php(.*) site2.ru/index.php$1

(.*) - все что после index.php. Может быть, а может и не быть.
$1 - все что нашли, отдаем в новый урл.

Более подробно про параметры в URL можно узнать тут: http://niallohiggins.com/2009/05/01/apache-mod_rewrite-rewriterule-with-query-string/

P.S. Я тут вдруг подумала что Вы имели ввиду что-то такое:
из этого:
/script?key=123abcxyz
сделать вот это:
/abc/123/123abcxyz
Тогда будет чуть сложнее, с регулярными выражениями в духе:
RewriteRule ^/script?key=(([0-9a-f]{3})([0-9a-f]{3}).*) /$2/$3/$1
  •  



rz00007Topic starter

Цитата: surfer от 06-07-2012, 12:02:48
а тут поищи _http://devaka.ru/articles/redirect-301

читал, но там такого нету...

Добавлено: 06-07-2012, 14:35:13


Цитата: Haosame от 06-07-2012, 11:40:47
Может быть что-то в таком духе:

RewriteRule site.ru/index.php(.*) site2.ru/index.php$1

(.*) - все что после index.php. Может быть, а может и не быть.
$1 - все что нашли, отдаем в новый урл.

Более подробно про параметры в URL можно узнать тут: http://niallohiggins.com/2009/05/01/apache-mod_rewrite-rewriterule-with-query-string/

P.S. Я тут вдруг подумала что Вы имели ввиду что-то такое:
из этого:
/script?key=123abcxyz
сделать вот это:
/abc/123/123abcxyz
Тогда будет чуть сложнее, с регулярными выражениями в духе:
RewriteRule ^/script?key=(([0-9a-f]{3})([0-9a-f]{3}).*) /$2/$3/$1


Нет, нет Вы не так поняли, мне не нужно пренаправление с www на без.... у меня совсем другая проблема!

Мне нужно перенаправить с одного url на url2 . Обычно это делается с использованием Redirect 301 /old.html http://site.ru/new.html но у меня стоят еще параметры в урл, которые нельзя передать таким способом (см. выше ответ хостера).

Добавлено: 06-07-2012, 14:41:06


ок, максимально просто объясню:

как перенаправить страницу 1
site.ru/index.php?option=com_content&view=article&id=9&Itemid=8

на страницу 2
site.ru/index.php?option=com_aicontactsafe&view=message&layout=message&pf=1&Itemid=8

surfer

тебе надо конкретные страницы на конкретные или по маске?


rz00007Topic starter

да, конкретные на конкретные

Добавлено: 13-07-2012, 09:39:23


Добрые люди подсказали решение:

RewriteEngine on
RewriteCond %{QUERY_STRING} ^option=com_content&view=article&id=9&Itemid=8$
RewriteRule ^index.php$ http://test1.ru/index.php?option=com_aicontactsafe&view=message&layout=message&pf=1&Itemid=8 [L,R=301]