Derzaiii
@Derzaiii
Типичный телец

Как настроить правильно 301 редирект в modx через .htaccess?

Подскажите как правильно настроить 301 редирект для следующих вариантов:
http://site.ru/ -> http://site.ru
http://site.ru/index , http://site.ru/index.php, http://site.ru/index.html  ->  http://site.ru
http://www.site.ru.  -> http://site.ru.


Пробовал такой вариант:
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>

В итоге появляются проблемы:
Не открывается админка.

UPD

Опытным путём выяснил что вот этот код влияет на админку(из админки не видно настройки)
RewriteCond %{THE_REQUEST} ^.*/index
RewriteRule ^(.*)index http://borneza.ru/$1 [R=301,L]
  • Вопрос задан
  • 5251 просмотр
Решения вопроса 1
Derzaiii
@Derzaiii Автор вопроса
Типичный телец
Нашел решение:
Для настройки переадресации с
site.ru/index
site.ru/index.php
site.ru/index.html
www.site.ru/
site.ru/
на
site.ru

Вставляем в .htaccess
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/ 
RewriteRule ^(.*)index\.(php|html|htm)$ $1 [R=301,L]
RewriteBase /

# склейка домена с и без www

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

# Переадресация с index

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


# The Friendly URLs part
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
zooks
@zooks
Frontend
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^example-domain-please-change\.com [NC]
RewriteRule (.*) http://example-domain-please-change.com/$1 [R=301,L]

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


В общем, ход мыслей понятен.
Ответ написан
Комментировать
@mih_max
Подставил свой сайт вместо borneza.ru, но меня всё равно на них выкидывает. Что за чертовщина? О_О
Ответ написан
Ваш ответ на вопрос

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

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