Помогите составить 2 правила преобразования

LodeRunner

Старатель
Регистрация
10 Фев 2010
Сообщения
219
Реакции
12
Помогите пожалуйста составить правила преобразования ссылок. Нужно сделать 2 правила.

1) Нужно все ссылки вида:
Код:
www.site.ru/index.php/page
перенаправлять на:
Код:
www.site.ru/page

2) Нужно ссылку:
Код:
www.site.ru/index.php?option=com_content&view=article&id=9
преобразовать в ссылку:
Код:
www.site.ru/banner
"banner" - это уникальное имя страницы.
Простой редирект 301 тут не работает, т.к. ссылка site.ru/bannerизначально не работает.
Код:
Redirect 301 /index.php?option=com_content&view=article&id=9 http://www.site.ru/banner
 
RewriteRule ^index.php/page$ /page [L]
RewriteRule ^banner$ /index.php?option=com_content&view=article&id=9 [L]
 
Код:
RewriteRule ^index.php/page$ /page [L]
Это работает для уникальной страницы. Спасибо.
А как сделать, чтобы это правило работало для всех страниц? Т.е. чтобы не прописывать это правило для каждой страницы в отдельности, а прописать сразу одной строкой для всех возможных вариантов страниц? Т.е. ссылка:
Код:
www.site.ru/index.php/любая страница
редиректит на:
Код:
www.site.ru/любая страница
Попробовал написать так, но не работает:
Код:
RewriteRule ^index.php/$1 /$1 [L]

И можно ли [L] заменить на [R=301,L]?

Код:
RewriteRule ^banner$ /index.php?option=com_content&view=article&id=9 [L]
А это не работает почему-то...
 
И можно ли [L] заменить на [R=301,L]?
А это не работает почему-то...
Да, это уже будет редирект з 301-м кодом ответа серера. У меня работает с таким флагом.
Попробовал написать так, но не работает:
Код:
RewriteRule ^index.php/$1 /$1 [L]
А почему оно должно работать? :)
Код:
RewriteEngine on
RewriteRule ^index.php/(.*)$ /$1 [R=301,L]
 
А почему оно должно работать?
Все не могу выучить этот мод_реврайт и регулярные выражения - не встречал в сети нормальных обучалок, для меня это темный лес.
Спасибо!

Но вот это все равно не работает:
Код:
RewriteRule ^banner$ /index.php?option=com_content&view=article&id=9 [R=301,L]
Никак вообще не редиректится, наверное у Джумлы как-то по-другому с подобными ссылками надо поступать.
 
Никак вообще не редиректится, наверное у Джумлы как-то по-другому с подобными ссылками надо поступать.
Без разницы какая CMS, возможно оно перебивается другим правилом. Скиньте код .htaccess и URL сайта.
 
ShoxMaster
Я не так выразился. Сейчас все объясню.
Вот такое условие работает(я там в слове banner добавил еще слеш, т.к. без него не работала ссылка со слешем на конце:(
Код:
RewriteRule ^banner/$ /index.php?option=com_content&view=article&id=9 [R=301,L]
Т.е. в этом примере я ввожу адрес:
Код:
www.site.ru/banner
и после этого меня сразу редиректит на адрес:
Код:
www.site.ru/index.php?option=com_content&view=article&id=9

Все хорошо, за исключением одного 'но' - мне нужно, чтобы какой я адрес ввел, такой и отображался бы в адресной строке, но редиректил бы меня по нужному адресу. Т.е. чтобы после того как я введу адрес:
Код:
www.site.ru/banner
меня бы перекидывало на адрес:
Код:
www.site.ru/index.php?option=com_content&view=article&id=9
НО в строке браузера отображался бы адрес:
Код:
www.site.ru/banner
Т.е. чтобы люди не видели настоящий длинный адрес.

Такое вообще возможно смастерить в .htaccess или нереально?
 
От оно чё....:)
Тогда правило, что написал citrus - правильное. Только есть одно замечание, т.к. я бы поставил редирект со слешем и без:
Код:
RewriteRule ^banner/?$ /index.php?option=com_content&view=article&id=9 [L]
Такое вообще возможно смастерить в .htaccess или нереально?
Вполне возможно :D
 
Ок, ребят, спасибо вам! Все заработало!)

Первоначально не работало скорее всего из-за того, что я кэш в браузере не чистил после изменений в файле .htaccess. После чистки все заработало. Сейчас тоже наблюдается такая картина - если что-то изменил и кэш не почистил, то изменения не вступают в силу, т.е. браузер работает как-будто автономно.

Добавлено через 4 минуты
Ну и напоследок еще 1 вопрос, ребят, подскажите.
Нужно редиректить ссылки вида:
Код:
www.site.ru/any_page/index.php
на ссылки вида:
Код:
www.site.ru/any_page/
В общем надо обрезать у ссылок окончание index.php
 
Назад
Сверху