Не работает редирект .htaccess

Рейтинг: 1Ответов: 1Опубликовано: 17.03.2015

Добрый день. Совершенно отчаялся настроить редирект на своём сайте, может быть, кто-нибудь сможет помочь.

Сайт на modx Evolution. Страница попала в индекс, после этого урл вручную изменили. Старый урл выдаёт 404 ошибку. Надо с него сделать редирект на новый урл. Перепробовал все варианты редиректов в .htaccess, которые смог найти за несколько недель. Ни один из них не работает, в лучшем случае выдаёт ошибку 500.

При этом файл .htaccess содержит много различных редиректов (friendly url, www, multilingual и другие), которые успешно работают.

Redirect /page.html http://site.ru/new-page.html

и подобные не работают.

Если есть время, помогите, пожалуйста.

Содержимое .htaccess:

Options +FollowSymLinks

# Friendly URLs
RewriteEngine On
RewriteBase /

# Fix Apache internal dummy connections from breaking [(site_url)] cache
RewriteCond %{HTTP_USER_AGENT} ^.*internal\ dummy\ connection.*$ [NC]
RewriteRule .* - [F,L]

# Exclude /assets and /manager directories from rewrite rules
RewriteRule ^(manager|assets) - [L]

# Redirect from mydomain.com/rootname to mydomain.com/rootname/
RewriteRule ^en$ en/ [R=301,L]
RewriteRule ^ru$ ru/ [R=301,L]

RewriteRule \.(jpg|jpeg|png|gif|ico)$ - [L]

RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^(.*)$ [NC]
RewriteCond %{REQUEST_URI} !^/(en|ru)/
RewriteRule ^(.*)$ http://%1/ru/$1 [R=301,L]

# The Friendly URLs part
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^en/(.*)$ index.php?q=$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ru/(.*)$ index.php?q=$1 [L,QSA]

Ответы

▲ 2Принят

В основном htacces у modx выглядит так:

Options +FollowSymlinks
RewriteEngine On
RewriteBase /

# Fix Apache internal dummy connections from breaking [(site_url)] cache
#RewriteCond %{HTTP_USER_AGENT} ^.*internal\ dummy\ connection.*$ [NC]
#RewriteRule .* - [F,L]

# Rewrite domain.com -> www.domain.com -- used with SEO Strict URLs plugin
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^domain\.org\.ua [NC]
RewriteRule (.*) http://domain.org.ua/$1 [R=301,L]

# Exclude /assets and /manager directories and images from rewrite rules
RewriteRule ^(manager|assets)/*$ - [L]
RewriteRule \.(jpg|jpeg|png|gif|ico)$ - [L]

# For Friendly URLs
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Перед строчкой

RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

ставьте свой редирект, он должен работать.