Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы 301 редирект убирает слеш перед названием категории

301 редирект убирает слеш перед названием категории


     03.10.2012    Общие вопросы    3522

вопрос
Всем доброго дня!
Есть проблема с 301 редиректом, а точнее он убирает слеш и вылетает страница с ошибкой.
Первый код делает редирект если забыли поставить в конце слеш он его доставляет. Второй код делает редирект на главную страницу убирая дубли с www и .index.php

Теперь к сути проблемы.
Если на сайт заходим так www.site.ru/ или www.site.ru или site.ru/index.php то получаем редирект на главную site.ru/

Если заходим на сайт site.ru/kategoria то получаем редирект на страницу site.ru/kategoria/
А если зайти так www.site.ru/kategoria/ или www.site.ru/kategoria то получаем редирект на страницу site.rukategoria/ то есть между .rukategoria/ пропадает слеш, как это починить ?



С уважением Felix!

Ответил: Felix


Вот верный и рабочий вариант редиректов, убирает все дубли!

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !.html$
RewriteCond %{REQUEST_URI} !.xml$
RewriteRule (.+) $1/ [R=301,L]


Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.site\.ru [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://site.ru/ [R=301,L]

Комментарии пользователей (4)

ПафНутиЙ
1065

3396 | 2434

ПафНутиЙ - 3 октября 2012 08:09 - Админ

Попробуйте вот так:
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !.html$
RewriteCond %{REQUEST_URI} !.xml$
RewriteRule (.+) $1/ [R=301,L]


RewriteCond %{HTTP_HOST} ^www\.site\.ru [NC]
RewriteRule ^(.*)$ http://site.ru$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://site.ru [R=301,L]

Каков вопрос - таков и ответ. Просто помните об этом.

Felix
1

25 | 8

Felix - 3 октября 2012 10:23 - Юзер

Не помогло, пропал редирект с www.site.ru/ на site.ru/
Так же на site.ru/index.php не заходит, только если слеш поставить в конце то страница открывается, но опять же без редиректа на site.ru/

Felix
1

25 | 8

Felix - 3 октября 2012 13:13 - Юзер

Тфу блин, сам допёр как сделать, когда внимательно код посмотрел.
Надо было просто в редиректе добавить слеши

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.site\.ru [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://site.ru/ [R=301,L]


И сразу всё заработало как нужно.
К стати ПафНутиЙ Вам тоже не помешало бы поставить этот редирект к себе на сайт.

ПафНутиЙ
1065

3396 | 2434

ПафНутиЙ - 3 октября 2012 17:04 - Админ

Я отслеживаю ошибочные url и исправляю если что не так, поэтому на этом сайте всё ок

Каков вопрос - таков и ответ. Просто помните об этом.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы