@LuckyRuS

Как настроить 301 редирект htacces?

Доброго времени суток! Помогите настроить редирект для сайта.

Переделал сайт с WP на MODX и теперь поменялась структура у 100 ссылок, http сменился на https

Прописываю в .htacces следующие варианты, но они не помогают:
Redirect 301 /категория/статья.html https://сайт.ру/категория/подкатегория-1/подкатегория-2/статья

Redirect permanent /категория/статья.html https://сайт.ру/категория/подкатегория-1/подкатегория-2/статья

RewriteRule ^/категория/статья.html$ https://сайт.ру/категория/подкатегория-1/подкатегория-2/статья [R=301,L]


Во всех трех случаях выдает ошибку 404.

Все содержимое фала .htaccess
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteRule ^/категория/статья.html https://сайт.ру/категория/подкатегория-1/подкатегория-2/статья [R=301,L]
</IfModule>

RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^сайт\.ру [NC]
RewriteRule (.*) https://сайт.ру/$1 [R=301,L]

RewriteCond %{SERVER_PORT} !^443
RewriteRule (.*) https://сайт.ру/$1 [R=301,L]

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

php_flag register_globals Off

#ExpiresActive On
#ExpiresByType image/gif A2592000
#ExpiresByType image/jpeg A2592000
#ExpiresByType image/png A2592000
#BrowserMatch "MSIE" brokenvary=1
#BrowserMatch "Mozilla/4.[0-9]{2}" brokenvary=1
#BrowserMatch "Opera" !brokenvary
#SetEnvIf brokenvary 1 force-no-vary

# сжатие text, html, javascript, css, xml:
<ifModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
</ifModule>
# Включаем кэш в браузерах посетителей
<ifModule mod_headers.c>
    # Все html и htm файлы будут храниться в кэше браузера один день
    <FilesMatch "\.(html|htm)$">
        Header set Cache-Control "max-age=43200"
    </FilesMatch>
    # Все css, javascript и текстовые файлы будут храниться в кэше браузера одну неделю
    <FilesMatch "\.(js|css|txt)$">
        Header set Cache-Control "max-age=604800"
    </FilesMatch>
    # Все флэш файлы и изображения будут храниться в кэше браузера один месяц
    <FilesMatch "\.(flv|swf|ico|gif|jpg|jpeg|png)$">
        Header set Cache-Control "max-age=2592000"
    </FilesMatch>
    # Отключаем кеширование php и других служебных файлов
    <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
        Header unset Cache-Control
    </FilesMatch>
</IfModule>
<ifModule mod_expires.c>
    ExpiresActive On
    #по умолчанию кеш в 5 секунд
    ExpiresDefault "access plus 5 seconds"
    # Включаем кэширование изображений и флэш на месяц
    ExpiresByType image/x-icon "access plus 1 month"
    ExpiresByType image/jpeg "access plus 4 weeks"
    ExpiresByType image/png "access plus 30 days"
    ExpiresByType image/gif "access plus 43829 minutes"
    ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
    # Включаем кэширование css, javascript и текстовых файлов на одну неделю
    ExpiresByType text/css "access plus 604800 seconds"
    ExpiresByType text/javascript "access plus 604800 seconds"
    ExpiresByType application/javascript "access plus 604800 seconds"
    ExpiresByType application/x-javascript "access plus 604800 seconds"
    # Включаем кэширование html и htm файлов на один день
    ExpiresByType text/html "access plus 43200 seconds"
    # Включаем кэширование xml файлов на десять минут
    ExpiresByType application/xhtml+xml "access plus 600 seconds"
</ifModule>

Редирект работает если убрать QSA в строчке

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

Но при этом к ссылке добавляется ?q=<старый_адрес_страницы>
  • Вопрос задан
  • 263 просмотра
Решения вопроса 1
ruslan_aleev
@ruslan_aleev
MODX с cat-Art.ru
Пишите редиректы сразу после
RewriteEngine On
RewriteBase /

установка https (для хоста beget работает, для других хостингов может другая директива нужна):
#Редирект на HTTPS:
RewriteCond %{HTTPS} =off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

редирект для страниц будет таким:
#301 Редирект страниц:
RewriteRule ^category/old-page.html$ category/new-page [R=301,NC,L]
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Froggyweb
Используй расширение Redirector вполне удобная штука.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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