L
L
LuckyRuS2017-08-15 09:45:47
MODX
LuckyRuS, 2017-08-15 09:45:47

How to set up htacces 301 redirect?

Good day! Help set up a redirect for the site.
I remade the site from WP to MODX and now the structure of 100 links has changed, http has changed to https
. I write the following options in .htacces, but they do not help:

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

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

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

In all three cases, it gives a 404 error.
All contents of the .htaccess file
<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>

The redirect works if you remove the QSA in the line
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
But at the same time ?q=<old_page_address> is added to the link

Answer the question

In order to leave comments, you need to log in

2 answer(s)
R
Ruslan, 2017-08-15
@LuckyRuS

Write redirects right after

RewriteEngine On
RewriteBase /

installing https (for host beget works, for other hosts another directive may be needed):
#Редирект на HTTPS:
RewriteCond %{HTTPS} =off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

the redirect for the pages will be like this:
#301 Редирект страниц:
RewriteRule ^category/old-page.html$ category/new-page [R=301,NC,L]

F
Froggyweb, 2017-08-15
@Froggyweb

Use the Redirector extension is quite a handy thing.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question