Помогите плиз по .htaccess

B4
На сайте с 27.04.2012
Offline
94
580

На сайте www.site.ru обнаружилась проблема с настройкой переадресации. На данный момент адреса папок (каталогов) имеют слеш в конце, но могут быть доступны по двум вариантам: со слешем и без. Например:

http://www.site.ru/news/

http://www.site.ru/news

или

http://www.site.ru/catalogue/razdel/

http://www.site.ru/catalogue/razdel/

В обоих случаях код ответа сервера 200 ОК.

При этом страницы товаров наоборот, идут без слеша, и при добавлении его (/) в конец УРЛа происходит 301 редирект на УРЛ без слеша:

http://www.site.ru/catalogue/razdel/tovar

Задача: настроить 301 редирект так, чтобы папки (каталоги) были доступны только по адресу со слешем, а страницы товаров остались как есть.

подскажите плиз как сделать, никак не выходит..

B4
На сайте с 27.04.2012
Offline
94
#1

блин никто не знает или обсуждалось уже?

J
На сайте с 20.02.2014
Offline
120
jkm
#2

Обсуждалось не раз достаточно поискать по запросу "слеш в конце".

Для редиректа только части адресов ставить правила сразу поле RewriteEngine On.


RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+(/[^/]+)?)$ /$1/ [R=301,L]
sas7110
На сайте с 22.05.2009
Offline
111
#3

Гляньте пожалуйста, у меня правильно настроено, может что убрать или добавить нужно?

Движек DLE 8.3

Дело в том, что допустим по запросу одному категория в выдаче без слеша, а другая категория по запросу со слешем, не хотелось бы чтобы терялись позиции теперешние. Вес распределится так, то есть не будет такого, что слетят позиции этих и других категорий из-за того что я перекинул все со слешем? Я понял, в таком варианте слеш ставится в конце новости, когда нет подкатегорий.

Правда теперь новости в конце со слешем....

RewriteEngine On

Options +FollowSymLinks - нужно ли это в DLE?
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^/?(.*) http://%1/$1 [L,R=permanent]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]

С таким способом:


RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+(/[^/]+)?)$ /$1/ [R=301,L]

Только один сайт заработал, чтобы категории без слеша переводились с слешем и новости в конце без слеша. А остальные сайты делают новости со слешем - сайт.ru/filmy/12-ona-her-2013-bdrip-avc.html/

Но тут тоже какая-то странная ситуация, категория с фильмами без слеша, а сериалы со слешем...

Нужно будет только категории 301 сделать все или есть другой выход, чтобы каждую категорию не прописывать...

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


DirectoryIndex index.php
RewriteEngine On

# Убираем www
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^/?(.*) http://%1/$1 [L,R=permanent]

#Для index.php
RewriteCond %{THE_REQUEST} index\.(php|html)
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^index\.(php|html)$ /? [L,R=301]

#Page1
RewriteRule ^(.*)page/1/?$ /$1 [L,R=301]

#Для со слэшем и расширением
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)(?<!/)$ /$1/ [L,R=301]

Еще один вопрос, можно ли сделать страницам категориям и подкатегориям, чтобы на конце был .html? Например сайт.ру/igry.html и далее подкатегория сайт.ру/igry/gonki.html

Можно ли сделать такое и не помешает ли оно сайту? Спасибо заранее.

sas7110
На сайте с 22.05.2009
Offline
111
#4

На всех сайтах где установил данный код, посещаемость упала до 25%

Как определить в чем проблема? Сайты работают нормально, новости показываются...

[umka]
На сайте с 25.05.2008
Offline
456
#5
sas7110:
На всех сайтах где установил данный код, посещаемость упала до 25%
Как определить в чем проблема? Сайты работают нормально, новости показываются...

Если есть ошибки, они должны быть в error_log

Лог в помощь!
sas7110
На сайте с 22.05.2009
Offline
111
#6

Если в логах на сервере, то там пару ошибок связанных с

Content len: 51, Request line: 'POST /engine/modules/gett.php HTTP/1.1'

Больше ничего не нашел, может в движке есть логи свои?

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