jkm

Рейтинг
120
Регистрация
20.02.2014


RewriteCond %{THE_REQUEST} " /stat\.php\?id=77 "
RewriteRule ^ /tovar/? [R=301,L]

# редирект для https
RewriteBase /
RewriteCond %{HTTP:X-HTTPS} 1
RewriteRule ^(.*) http://senato-r.ru/$1 [l,r=301]

# редирект для www
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.senato-r.ru$ [NC]
RewriteRule (.*) http://senato-r.ru/$1 [R=301]

# редирект для https и www
RewriteBase /
RewriteCond %{HTTP:X-HTTPS} 1
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.senato-r.ru$ [NC]
RewriteRule (.*) http://senato-r.ru/$1 [R=301]

Эти правила делают как раз наоборот редирект на http.

Покажите как у вас сейчас выглядит правило для редиректа с http на https.

К нему нужно добавить одну строку


RewriteCond %{HTTP_HOST} ^www\.senato-r\.ru$ [NC,OR]


RewriteCond &%{QUERY_STRING} ^(?:&catid=(\d+)|&sobi2Id=(\d+)|&sobi2Task=sobi2Details()|&[^&]+)++\3
RewriteCond "%1 %2 \
1=-cat-name-1 \
2=-cat-name-2 \
" "^(\d+) (\d+) .*?\1=(\S+)"
RewriteRule ^ http://new.site.ru/index.php/cat/%1%3/%2? [R=301,L]
Дэн Шорин:
чтобы со всех страниц типа http://site.com/catalog/?p=123 редиректило на http://site.com/catalog/


RewriteCond %{THE_REQUEST} "^\S+ (/.*?\?)"
RewriteRule ^ %1 [R=301,L]

Сразу после RewriteEngine On добавить


RewriteRule ^([^&]+)&(.*) /$1?$2 [R=301,L]

(?! ) - негативная опережающая проверка.

Строка в $request_uri начинается с /.

Нужно (?!/personal/) или /(?!personal/)


"^(/(?!personal).*)index\.(?:php|html)"

В исходном правиле для index.php было дополнительное условие RewriteCond %{QUERY_STRING} ^\z

Т.е. index.html удалялся всегда, а index.php только когда в адресе нет GET параметров.

Можно после php добавить $.


"^(.*)index\.(?:php$|html)"


RewriteCond %{THE_REQUEST} /(.*)index.php.*$
RewriteCond %{QUERY_STRING} ^\z
RewriteRule ^(.*)index\.php$ http://%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{THE_REQUEST} /(.*)index.html.*$
RewriteRule .* /%1 [R=301,L]

Эти правила отрезают index.html и index.php

Эквивалент


if ($request_uri ~ "^(.*)index\.(?:php|html)") {
return 301 $1;
}

Можно же и без if


rewrite (/catalog/Joy/joy_em)_6_1t/ $1_1x1t/ permanent;
rewrite ^(.*)index\.(?:php|html) $1 permanent;

Второе правило может вызвать зацикливание так что лучше проверять $request_uri.


if ($request_uri ~ "^(.*)index\.(?:php|html)") {
return 301 $1;
}
Jest:

На старом сайте:
/razdel/135-zagolovok-zapisi
На новом движке:
/stati/135-zagolovok-zapisi.html


RewriteRule ^razdel/([^/.]+)$ /stati/$1.html [R=301,L]
Alexeo:
http://site.ru/?blabla
на главную http://site.ru/ , или на 404

а если вопрос в другом месте , не сразу после домена например
http://site.ru/blabla/bla?param
то редиректа чтобы не было


RewriteCond %{THE_REQUEST} "^\S+ /\?"
RewriteRule ^ /? [R=301,L]

Или так


RewriteCond %{QUERY_STRING} .
RewriteRule ^$ /? [R=301,L]
Всего: 749