Как удалить дубли через htaccess?

Пытаюсь с помощью htaccess избавиться от:
1. index.php
2. убрать слеш на конце
3. добавить www

Делаю так

Options  -Indexes
RewriteEngine On

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

RewriteCond %{HTTP_HOST} ^site\.ru
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,NE,R=301]

RewriteRule ^.htaccess$ - [F]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !index.php


Все работает но есть пару моментов

Дописал еще строчки для перенаправления ошибок 403 и 404

ErrorDocument 404 /404
ErrorDocument 403 /403


И получается, при обращение к папке с картинками меня перекидывает в кореневую папку

www.site.ru/home/admin/data/www/site.ru/images?men...

Слудеющая проблема, что строчка www.site.ru/index.php?menu=page не редиректит на /

Подскажите что не так.
  • Вопрос задан
  • 2976 просмотров
Пригласить эксперта
Ответы на вопрос 1
JonGol
@JonGol Автор вопроса
Проблему с
Следующая проблема, что строчка www.site.ru/index.php?menu=page не редиректит на /


Решил так:

if (!empty($_SERVER['QUERY_STRING']) && empty($_SERVER['REDIRECT_URL'])) {
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: /");
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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