Нужна помощь в htaccess

12
zaka4ek
На сайте с 24.03.2007
Offline
209
3789

Пытаюсь сделать редирект на битриксе со страниц без "/" на конце на страницы со "/" и со страницы /index.php на /

Прописываю следующее


RewriteCond %{REQUEST_URI} ^(.*)/$
RewriteRule .* - [L]
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]
RewriteCond %{REQUEST_METHOD} =GET
RewriteCond %{REQUEST_URI} ^(.*)/index.php$
RewriteRule ^(.*)$ %1/ [R=301,L]

В итоге работают ссылки все кроме раздела каталога...

Не идет переадресация со страниц /catalog/furniture/bedrooms на страницы /catalog/furniture/bedrooms/

Может прописываю не то? Если у кого то имеется рабочий код для битрикса буду премного благодарен если поделитесь...

Продвигай с умом Sape (http://www.sape.ru/r.yoJRtSiZZR.php) Продвигай с умом Gogetlinks (https://gogetlinks.net/?inv=sya7n2)
gormarket
На сайте с 29.12.2010
Offline
47
#1

не имел дела с битриксом, но наверно у Вас уже в htaccess прописано много правил преобразований, а они могут вносить свое влияние

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

Но есть и другой вариант:

попробуйте добавить в htaccess в корне сайта перед первыми имеющимися командами RewriteRule или Redirect


RewriteCond %{ENV:REDIRECT_RWR} ^yes$
RewriteRule .* - [L]

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(.*)/[^./]$ $0/ [R=301,L,E=RWR:yes]

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(.*)/?index\.php$ http://%{HTTP_HOST}/$1/ [R=301,L,E=RWR:yes]

Первая пара строк прекращает дальнейшие преобразования если они были сделаны во 2 или 3 парах строк

Вторая пара строк делает 301 редирект на адрес с добавления слеша (если его нет и преобразований еще не было)

Третья пара строк делает 301 редирект на каталог, если запрашивается index.php

здесь я не совсем уверен в работоспособности приведенной строки для index.php в подкаталогах

если бы нужно было только в корне сайта, то так

RewriteCond %{ENV:REDIRECT_STATUS} ^$

RewriteRule ^index.php$ http://%{HTTP_HOST}/ [R=301,L,E=RWR:yes]

Надеюсь у Вас сейчас нормально отобажаются адреса, заканчивающиеся на слеш (иначе нужны еще дополнительные команды)

Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
zaka4ek
На сайте с 24.03.2007
Offline
209
#2

Полный htaccess


Options -Indexes

ErrorDocument 404 /404.php

<IfModule mod_php5.c>
php_flag allow_call_time_pass_reference 1
php_flag session.use_trans_sid off
#php_value display_errors 1
php_value mbstring.func_overload 2
php_value mbstring.internal_encoding UTF-8
</IfModule>

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
RewriteCond %{HTTP_HOST} ^domen.ru
RewriteRule (.*) http://www.domen.ru/$1 [R=301,L]

RewriteCond %{REQUEST_URI} ^(.*)/$
RewriteRule .* - [L]
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]
RewriteCond %{REQUEST_METHOD} =GET
RewriteCond %{REQUEST_URI} ^(.*)/index.php$
RewriteRule ^(.*)$ %1/ [R=301,L]

</IfModule>

<IfModule mod_dir.c>
DirectoryIndex index.php index.html
</IfModule>

<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/jpeg "access plus 3 day"
ExpiresByType image/gif "access plus 3 day"
</IfModule>
gormarket
На сайте с 29.12.2010
Offline
47
#3

Не нашел в Вашем htaccess правил, которые делают переадресацию

со страниц /catalog/furniture/bedrooms на страницы /catalog/furniture/bedrooms/

Добавьте после строк

RewriteCond %{REQUEST_URI} ^(.*)/index.php$

RewriteRule ^(.*)$ %1/ [R=301,L]


RewriteCond %{REQUEST_METHOD} =GET
RewriteRule ^(.*)/[^./]$ $0/ [R=301,L]
zaka4ek
На сайте с 24.03.2007
Offline
209
#4

gormarket, Не работает, к сожалению...

gormarket
На сайте с 29.12.2010
Offline
47
#5

Если у Вас нет реального каталога /catalog/furniture/bedrooms

то этот адрес обрабатывается самым первым правилом RewriteRule, и до редиректа на адрес со слешем не доходит

и в этом случае может помочь код


RewriteCond %{ENV:REDIRECT_RWR} ^yes$
RewriteRule .* - [L]

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(.*)/[^./]$ $0/ [R=301,L,E=RWR:yes]

вставленный сразу после

RewriteEngine On

(если Вы еще не пробовали применить мое самое первое предложение, до того как выложили содержимое htaccess )

zaka4ek
На сайте с 24.03.2007
Offline
209
#6

gormarket, Да вообще как то странно все, например со страницы /catalog/furniture идет редирект на /catalog/furniture/, а уже со страницы /catalog/furniture/bedrooms на /catalog/furniture/bedrooms/ не идет.

Тоже самое и со страницами новостей, например со страницы /news идет редирект на /news/, а со страницы /news/notebook_from_eldorado на /news/notebook_from_eldorado/ не идет...

Ваще не могу вкурить, как так...

Последнее решение не помогло... В битриксе есть "обработка адресов", может там как то настроить??? Есть тут кто-нибудь, кто с битриксом хорошо знаком?

gormarket
На сайте с 29.12.2010
Offline
47
#7

zaka4ek, я извиняюсь за свою невнимательность (упустил один "+" после квадратных скобок)

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

вставьте сразу после

RewriteEngine On


RewriteCond %{ENV:REDIRECT_RWR} ^yes$
RewriteRule .* - [L]
RewriteRule ^.*/[^./]+$ http://%{HTTP_HOST}/$0/ [R=301,L,E=RWR:yes]

и все должно заработать (редирект с калалога без слеша на то же самое со слешем)

пришлось добавить еще "http://%{HTTP_HOST}/", потому что иначе (без строки "RewriteBase /" как у Вас) может криво работать.

zaka4ek
На сайте с 24.03.2007
Offline
209
#8

gormarket, Отлично. спасибо, все работает.

S0
На сайте с 20.02.2011
Offline
1
#9

Помогите и мне пожалуйста. Надо избавиться от дублей страниц в джумле.

то есть существует много страниц вида:

/content/view/5/1/

/content/view/5/2/

/content/view/5/3/

и т.д. до бесконечности, хочу прописать в htaccess чтобы все эти страницы редиректились на /content/view/5/ через 301 редирект, но к сожалению не получается. Пишу такой код:

RewriteRule ^(content/view/([0-9]*)/([0-9]*))/$ /content/view/$1

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

siv1987
На сайте с 02.04.2009
Offline
427
#10

strat0caster,

RewriteRule ^(content/view/\d+/)\d+/$ /$1 [R=301,L]

вставить после rewriteengine

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий