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

T0
На сайте с 04.01.2010
Offline
56
#461

Samail, спасибо, но почему-то не срабатывает...

Сайт на вордпрессе, там еще стандартное от вордпресса есть:

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Samail
На сайте с 10.05.2007
Offline
361
#462

terra07, и как всё вместе у вас выглядит?

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

RewriteCond %{HTTPS} on
RewriteCond %{THE_REQUEST} " /page.php "
RewriteRule ^ http://site.com/page.php [L,R=301]
</IfModule>

Так?

E
На сайте с 05.05.2017
Offline
0
#463

Коллеги! Тут забавный случай возник. Хостинг на Зеноне, все конструкции типа

Redirect 301 /partner/yacht.shtml /index.shtml

обрабатываются нормально, а вот такие:

Redirect 301 /cgi-bin/materials.cgi?id=7604&chapter=13 /archive/1998/0225_7/art_otd_roditeli.shtml

никак! Выкурил инструкции, переделал вот в такое:

RewriteCond %{QUERY_STRING} ^id=7604&chapter=13$ [NC]
RewriteRule ^materials.cgi$ /archive/1998/0225_7/art_otd_roditeli.shtml [L,R=301]

но нет! Выдаёт 404, причем не мою кастомную 404, а серверную. Хостеры говорят, что если в адресе источника присутствует cgi-bin, то даже такая конструкция не поможет, якобы для адресов из cgi-bin правила htaccess не работают. Как выйти из ситуации, чтобы не клепать костыль в виде нового materials.cgi с редиректами внутри?

LS
На сайте с 16.05.2017
Offline
3
#464

Товарищи!

Подскажите, как склеить страницы по типу "site.ru/catalog/" и "site.ru/catalog/?". Также эти дубли соответствуют другим страницам, например, категориям: "site.ru/catalog/cat/" и "site.ru/catalog/cat/?"

Все, предлагаемые ранее решения на форуме, были опробованы, но безрезультатно. Помогите)

orphelin
На сайте с 02.07.2006
Offline
261
#465
Lidiya Splash:
Подскажите, как склеить страницы по типу "site.ru/catalog/" и "site.ru/catalog/?".

та же проблема, хочется с "site.ru/catalog/?" сделать редирект на "site.ru/catalog/"

такое правило:

RewriteCond %{QUERY_STRING} ^.+$

RewriteCond %{REQUEST_URI} ^$

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

срабатывает, только если после ? идет еще что-то.

S
На сайте с 30.09.2016
Offline
469
#466
Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
Э
На сайте с 11.08.2009
Offline
191
#467

Добрый день.

Сижу ломаю голову что делать со страницами сайт.ком/download/здесь-разные-адреса-без-слеша-в-конце в вордпрессе

Это страницы скачивания, в них только размер и тип файла. Собственно они не нужны, на странице описания есть ссылка сразу на скачивание. Плагин Download Manager их генерирует под каждый файл, а как отключить эти страницы не знаю, в настройках нет.

Переадресовать здесь-разные-адреса-без-слеша-в-конце на аналогичные записи не выйдет, они не идентичны по адресам

Может запретить отображение всех страниц после /download/ ?

Как это правильно выписать в htaccess?

По адресу сайт/download/ открывается 404, а если попадут в поиск то будут открываться сайт/download/здесь-разные-адреса-без-слеша-в-конце

I
На сайте с 22.06.2017
Offline
0
#468

При переезде с одного движка на другой, возникла необходимость редиректа старых ссылок. Примерно такого плана:

Redirect 301 /p3660664-shtangentsirkul-shts.html  /index.php route=product/product&path=530869&product_id=3660664

Такой редирект работает, однако необходимо, чтобы редиректило при совпадении части урл. Если взять примером данный /p3660664-shtangentsirkul-shts.html, то важна лишь часть /p3660664 все остальное не требуется.

Redirect 301 /p3660664(.*)  /index.php route=product/product&path=530869&product_id=3660664

Если использовать данную констукцию, редирект уже не работает. Хотелось бы узнать совет знающих людей, как правильно поступить в данной ситуации.

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

RedirectMatch 301 ^/p(3660664)(?!\d)  /index.php?route=product/product&path=530869&product_id=$1

Если адресов много, то лучше направить их все на отдельный php скрипт который по id сформирует нужную ссылку и сделает редирект.

RewriteRule ^p(\d+) redirect.php?product_id=$1 [L]
suffix
На сайте с 26.08.2010
Offline
325
#470

Код :

RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]

RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]

Убирает index.php - и всё было хорошо пока сайт был на http

Перевёл сайт на https и сейчас редирект идёт но в два этапа

https://www.site.ru/index.php ----> http://www.site.ru ----> https://www.site.ru

Оно конечно приходит куда надо но как бы лишний редирект убрать ?

Клуб любителей хрюш (https://www.babai.ru)

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