MODx Редирект с index, index.html, index.php на главную страницу

Каждый оптимизатор сталкивался с проблемой дублирования контента и “склейкой” таких страниц. Я не исключение, сегодня мы будем делать редирект (переадресацию) со всевозможных index* на главную страницу сайта на примере MODx Revolution 2.1 с помощью файла .htaccess.

301 redirect


Хороший хостинг по умолчанию редиректит с Index.php на главную страницу сайта. Но когда это не работает, мы получаем дубль главной страницы, что не является хорошим фактом для продвижения вашего сайта.

Итак, варианты, которые не работают.

Для начала, я решил воспользоваться стандартным решением для редиректа с index.html на главную страницу сайта:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ http://site.ru/$1 [R=301,L]

Но в результате получил неработающую админку – action_err_ns и “Доступ закрыт”. Хотя сам редирект на сайте работал.
Затем я попробовал следующий вариант:

RewriteRule ^index.php$ / [R=301,L]

И страницы сайта превратились из site.ru/about в site.ru/?q=about.

Повозившись и посоветовавшись пришел к работающему решению:

Чтобы сделать редирект с /index, /index.html И /index.php на главную страницу сайта в MODx Revolution нужно прописать в .htaccess:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^site.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L] # склейка домена с и без www

RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://site.ru/$1 [R=301,L]

RewriteCond %{THE_REQUEST} ^.*/index
RewriteRule ^(.*)index http://site.ru/$1 [R=301,L]

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

RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*)index.php$ http://site.ru/$1 [R=301,L]

+ для корректной работы необходимо добавить в папки assets, connectors, core, manager файл .htaccess с кодом:

RewriteEngine Off

IndexIgnore */*
<Files *.php>
    Order Deny,Allow
    Deny from all
</Files>

Всё, мы получили рабочие 301 редиректы и работающую админку. Надеюсь было интересно.
Если кто-нибудь знает варианты проще – прошу комментировать.

Поделиться с друзьями

Френдинг

 

Comments: 35

Leave a reply »

 
 
 

Не работает. Как грузилось с index.php так и грузится

 

Владимир, можете уточнить, сайт на MODx или нет? что конкретно делали?
Путей всегда много, чтобы выполнить редирект.

 

Старый сайт у меня был чисто на php и ссылки у меня были вот такого вида ( view_price.php?id=6 )
как теперь их перенести на простые ссылки типа /1/1.html
чет ни где найти не могу.. у меня modx EVO 1.0.5

 

а смотрели?

 

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

 

Я ошибся… ошибка вылазит

 

есил в директории(кор,манагер и т.д) разместить такой файл – получим 403 ошибку, либо ошибку при сохранении
зато редирект с индекс.пхп работает
вариант – разрешать с ип, по проверке досупа и т.д, либо вместо Deny – Allow писать, или вобще не заливать в директории

 

Я бы не постил, если бы не проверил это :) Смотря какой modx видимо. А вообще php Зло

 

В моем это не работает

 

Может сторонний код в htaccess блокирует?

 

Минут 40 лазил в нете и не мог найти верный редирект. www склеил, а вот …./index.php все равно грузился.
И о чудо!
Воспользовался вашим методом и все стало перенаправлять.
Спасибо.

 

Рад, что вам помогло! :)

 

Спасибо, верное решение! )

 

А с modx Evolution сработает?

 

Нужно попробовать. Сейчас не имею такой возможности. Для evo может быть даже проще… ИМХО

 

Не проще в роботсе закрыть и не парить мозг?

Disallow: /*.php$

 

Это можно, но мне кажется это больше похоже на полу-меру

 

У меня админ не открывается, пишет 500.
Я добавил вроде .htaccess во все папки, как и было сказано, что делать?)

 

Пожалуйста уточняйте версию вашего MODx

 

Ваш код невозможно скопировать. Защита ваша нещадно вырезает при копировании. Приходится вручную перепечатывать…

 

Но за код спасибо – очень помог!

 

Есть такое. Отключу наверно ее

 

На здоровье!

 

У меня этот способ заработал, отлично.
Огромное спасибо.

 

на здоровье!!

 

Здравствуйте! Подскажите, есть ли какое-нибудь решение: на сайте редирект на без index.php, но не работают комментарии в к2 (не добавляются). Если убрать этот редирект из htacess, все работает.

 

может в функционале комментариев используется запрос, который идет на index.php – и попадает в бесконечный редирект? Тут не угадаешь, надо смотреть напрямую. Я больше не работаю с apache и php, поэтому подсказать не смогу.

 

Спасибо за ответ! Пришлось пока убрать редирект на без index.php. А индекс закрыть в роботсе.

 

Сделал все как описано, но при попытке войти в админку говорит об отсутствии доступа:

Forbidden

You don’t have permission to access /mymanager/ on this server.

 

Ищите косяк в .htacess

 

Аналогичная проблема как у ykppon.
Если убрать .htaccess из папки manager работает, но криво, точнее сказать не работает админка )
Версия: MODX Revolution 2.3.1-pl :(

 

Не надо портить .htaccess в папках ModX. Добавьте к правилу следующие строки и все будет ОК:

RewriteCond %{REQUEST_URI} !^/assets/(.*)$
RewriteCond %{REQUEST_URI} !^/core/(.*)$
RewriteCond %{REQUEST_URI} !^/connectors/(.*)$
RewriteCond %{REQUEST_URI} !^/manager/(.*)$

 

Настроил на сайте .htaccess по твоей системе, все работает, спасибо! =)

 

Сделал как у Вас. Но строки
RewriteCond %{THE_REQUEST} ^.*/index
RewriteRule ^(.*)index http://site.ru/$1 [R=301,L]

приводят к выдаче сообщения “Доступ закрыт” при сохранении ресурса.

 

Извините, этому посту много лет, возможно что-то изменилось, я давно не пользовался MODX Revo

 

Leave a Reply

 
(will not be published)
 
 
Comment