Как сделать редирект (301, 302). Общая тема

J
На сайте с 20.02.2014
Offline
120
jkm
#971

vital8, редирект нужно ставить в начало файла выше остальных правил сразу после RewriteEngine On

RewriteCond %{QUERY_STRING} ^instrukzia$

RewriteRule ^$ /lechenie/instrukzia.html? [R=301,L]

Или

RewriteCond %{THE_REQUEST} " /\?instrukzia "

RewriteRule ^ /lechenie/instrukzia.html? [R=301,L]
Weblady
На сайте с 26.07.2011
Online
141
#972

Добрый день!

Перестал работать редирект, кажется, после перехода на https и добавления строк:

RewriteCond %{HTTPS} off

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

Вот такой код в .htaccess

AddDefaultCharset utf-8

AddLanguage ru .html .txt .php
ErrorDocument 404 /index.php
ErrorDocument 403 /index.php
Options -Indexes

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_URI} !(.*)/$
#RewriteRule ^(.*[^/])$ $1/ [L,R=301]
RewriteRule ^cat/([0-9]+) /gbrowse.php?cat_id=$1 [L,QSA]
RewriteRule ^card/([0-9]+) /create.php?card_id=$1 [L,QSA]

RewriteRule ^search/([0-9]+) /search.php?event_id=$1 [L,QSA]
RewriteRule ^search$ /search/ [R=301]
RewriteRule ^search/ /search.php [L,QSA]

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

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

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

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

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

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

RewriteCond %{REQUEST_URI} ^/voice/card\.php
RewriteCond %{QUERY_STRING} url\=
RewriteRule ^voice/card\.php$ /voice/? [R=301,L]

Помогите, пожалуйста, как правильно настроить.

J
На сайте с 20.02.2014
Offline
120
jkm
#973

webledi, на каких страницах и как именно не работает?

Просходит зацикливание и бесконечно редиректит на каких-то адресах или совсем ничего не происходит.

Weblady
На сайте с 26.07.2011
Online
141
#974

Не работает на всех страницах, ничего не происходит.

К примеру, страница /gbrowse.php?cat_id=19 должна переадресовывать на /cat/19

S
На сайте с 30.09.2016
Offline
469
#975
webledi:
страница /gbrowse.php?cat_id=19 должна переадресовывать на /cat/19

Не должна.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
Weblady
На сайте с 26.07.2011
Online
141
#976

Sitealert, помогите с верным правилом для редиректа.

S
На сайте с 30.09.2016
Offline
469
#977

С каким конкретно?

Так-то там в основном редиректы на адрес со слэшем. Нечему ломаться. Разве что новое что-то требуется сочинить.

Возможно, Вы имели в виду редиректы такого типа

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^cat_id=([0-9]+)
RewriteRule ^gbrowse\.php$ /cat/%1/? [R=301,L]
RewriteRule ^cat/([0-9]+) /gbrowse.php?cat_id=$1 [L,QSA]
Weblady
На сайте с 26.07.2011
Online
141
#978

Sitealert, благодарю!

Подскажите, пожалуйста, еще адрес такого вида

/toprated/toprated.php?page=75

чтобы редирект шел на

/toprated/75

S
На сайте с 30.09.2016
Offline
469
#979

webledi, ну аналогично же

RewriteCond %{QUERY_STRING} ^page=([0-9]+)

RewriteRule ^toprated/toprated\.php$ /toprated/%1/? [R=301,L]
Weblady
На сайте с 26.07.2011
Online
141
#980

Sitealert, вы знаете, переадресовывает сейчас с /gbrowse.php?cat_id=19 на /cat/19/, а нужно на /cat/19 (без слеша в конце).

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий