а http://site.ru/ у Вас нормально отображается? (не перебрасывает на http://site.ru/ru/ ?)
если нормально, то можно попробовать добавить флаг PT
RewriteRule ^(.*)ru/(.*)$ $1/$2 [R=301,L,PT]
Он нужен, если используются кроме mod_rewrite еще и другие трансляторы "URI-имя файла" (иначе они не видят результатов работы RewriteRule и обрабатывают исходный URI)
чтоб обрабатывалось и
http://site.ru/ru
сделайте так
Если у Вас нет реального каталога /catalog/furniture/bedrooms
то этот адрес обрабатывается самым первым правилом RewriteRule, и до редиректа на адрес со слешем не доходит
и в этом случае может помочь код
вставленный сразу после
RewriteEngine On
(если Вы еще не пробовали применить мое самое первое предложение, до того как выложили содержимое htaccess )
Ну тогда последнее, что могу предположить и посоветовать:
в htaccess возможно есть правила которые преобразуют адрес, не позволяя сделать редирект
попробуйте добавить в htaccess в корне сайта перед первыми имеющимися командами RewriteRule или Redirect следующий код
(сразу после
RewriteEngine On
RewriteBase /)
третья строчка делает 301 редирект на адрес без "/ru/" и устанавливает переменную "RWR"
а первые две строки делают выход из преобразований, если переменная "RWR" есть.
Не нашел в Вашем htaccess правил, которые делают переадресацию
со страниц /catalog/furniture/bedrooms на страницы /catalog/furniture/bedrooms/
Добавьте после строк
RewriteCond %{REQUEST_URI} ^(.*)/index.php$
RewriteRule ^(.*)$ %1/ [R=301,L]
а http://site.ru/ у Вас нормально отображается? (не перебрасывает на http://site.ru/ru/ ?)
если нормально, то можно попробовать добавить флаг PT
Он нужен, если используются кроме mod_rewrite еще и другие трансляторы "URI-имя файла" (иначе они не видят результатов работы RewriteRule и обрабатывают исходный URI)
не знаю что такое Жумфиш, но вдруг поможет
а так попробуйте:
для адреса типа
http://site.ru/ru/index.php
первый вариант действительно не работает
он работает для адресов, если в них перед "/ru/" есть папка
http://site.ru/folder/ru/index.php
не имел дела с битриксом, но наверно у Вас уже в htaccess прописано много правил преобразований, а они могут вносить свое влияние
Поэтому чтоб разобраться с тем кодом что Вы привели, нужно видеть весь файл htaccess.
Но есть и другой вариант:
попробуйте добавить в htaccess в корне сайта перед первыми имеющимися командами RewriteRule или Redirect
Первая пара строк прекращает дальнейшие преобразования если они были сделаны во 2 или 3 парах строк
Вторая пара строк делает 301 редирект на адрес с добавления слеша (если его нет и преобразований еще не было)
Третья пара строк делает 301 редирект на каталог, если запрашивается index.php
здесь я не совсем уверен в работоспособности приведенной строки для index.php в подкаталогах
если бы нужно было только в корне сайта, то так
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^index.php$ http://%{HTTP_HOST}/ [R=301,L,E=RWR:yes]
Надеюсь у Вас сейчас нормально отобажаются адреса, заканчивающиеся на слеш (иначе нужны еще дополнительные команды)
добавьте в htaccess в корне сайта
(если первые 2 строчки уже есть в htaccess, еще раз добавлять не нужно)
Чтобы убрать 301 редиректом любую строку запроса в адресе после index.php добавьте в htaccess в корне сайта
И не забудьте проверить, включен ли у Вас модуль mod_rewrite (если в htaccess нет следующих строк, добавьте их)
PROGRAMMATOR, Ваш вариант выдергивает ссылки не только из тега "а", но и из тега "link", например
<link rel="icon" href="favicon.ico" type="image/x-icon" />
SeoSkunk, если базовым является site.ru, и работаем на PHP, то все ссылки с site.ru можно выбрать так:
а если хотите выбрать все ссылки, а не только на site.ru, то так:
gormarket добавил 30.03.2011 в 09:56
Я вчера был не совсем прав:
пытался "быстренько допилить" заготовку, ранее написанную для других целей, и не учел, что могут быть еще и относительные ссылки
Так что мой последний вариант такой: