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

HL
На сайте с 12.12.2012
Offline
112
#191

Коллеги, подскажите пожалуйста, как провести склейку всех  страниц сайта, в том числе и 404 с внутренней страницей домена акцептора, за исключением файлов верификации панелей вебмастера ? Никак не могу нагуглить рабочий вариант (


Спасибо.

- Дорогой выкуп баннерных показов (https://goo.gl/Haxr87). Советую! - СеоПульт (https://seopult.ru/ref/0c1642776e7e1b04) + крауд-ссылки (https://goo.gl/3eXcqn) = успех - Проверенный CashBack сервис (https://goo.gl/mAIbxw). До 30%
E
На сайте с 01.10.2017
Offline
60
#192
HotLab #:
Спасибо.

Перед переадресацией по всем адресам нужно проверить существование упомянутых файлов. Например, при отсутствии каких-либо других файлов можно использовать условие mod_rewrite

RewriteCond %{REQUEST_FILENAME} !-f


Но в этом нет никакого смысла. "Склейки" множества произвольных страниц с одной в поисковых системах не произойдет. Достаточно настроить переадресацию с одного-двух подходящих адресов: https://searchengines.guru/ru/forum/1018269/page18#comment_16679036 (иначе поисковые системы в лучшем случае останутся равнодушны, а вот многие пользователи будут разозлены, если они искали по старому адресу что-то конкретное).

Автоматическая валидация доменов при выпуске сертификатов Let's Encrypt: https://acme.p20.ru/
HL
На сайте с 12.12.2012
Offline
112
#193
estic #:

Перед переадресацией по всем адресам нужно проверить существование упомянутых файлов. Например, при отсутствии каких-либо других файлов можно использовать условие mod_rewrite

Вот тут если можно поподробнее. Не очень разбираюсь с формированием правил (

В данный момент у меня прописано вот такое правило:

RewriteEngine On

<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} (.*)$
RewriteRule ^(.*)$ https://newsite.com/offers/ [L,R=301]
</IfModule>
Задача, чтобы при обращении по адресу /yandex_XXXXXXXXXX.html и /google_XXXXXXXXXX.html  не было редиректа
E
На сайте с 01.10.2017
Offline
60
#194
HotLab #:
В данный момент у меня прописано вот такое правило

Ваше условие замените на показанное мной (ваше было бесполезным, т.к. в нем регулярное выражение практически полностью дублирует таковое в самом правиле).

В корневом каталоге не должно быть никаких файлов кроме упомянутых вами. Т.е. желательно, чтобы даже .htaccess не было.

HL
На сайте с 12.12.2012
Offline
112
#195
estic #:

Ваше условие замените на показанное мной (ваше было бесполезным, т.к. в нем регулярное выражение практически полностью дублирует таковое в самом правиле).

В корневом каталоге не должно быть никаких файлов кроме упомянутых вами. Т.е. желательно, чтобы даже .htaccess не было.

Видимо я что-то не правильно делаю.

Options +FollowSymlinks
RewriteEngine On

#если запрошенного файла не существует
RewriteCond %{REQUEST_FILENAME} !-f
#редирект
RewriteRule ^(.*)$ https://newsite.com/offers/ [L,R=301]
При обращении к файлу верификации происходит редирект с добавлением к урлу файла, т.е. /offers/yandex_XXXXXXXXXX.html
W1
На сайте с 22.01.2021
Offline
145
#196
HotLab #:
за исключением файлов верификации
Options +FollowSymlinks
RewriteEngine On

RewriteCond %{REQUEST_URI} !^(/yandex_XXXXXXXXXX\.html|/google_XXXXXXXXXX\.html)$
RewriteRule ^ https://newsite.com/offers/ [L,R=301]
Мой форум - https://webinfo.guru –Там я всегда на связи
X
На сайте с 12.10.2021
Offline
0
#197

Приветствую. Может кто-то подскажет по поводу следующих задач в htaccess:

1.  Есть сайт с различным кол-вом вложенности: сайт.ru/пример1/пример2/. Нужно, чтобы при запросе перекидывало на такой вид: сайт.ru/пример2. Пример1 может быть любое слово, как и Пример2:  сайт.ru/машины/БМВ/;  сайт.ru/цветы/розы/;  сайт.ru/ноутбуки/асер/. Я нашел следующее правило:

RewriteCond %{REQUEST_URI} ^/products/(.+)/(.+)$

RewriteRule ^products/(.*)$ /products/%2 [R=301,L] , которое работало как нужно, но не долго))) Я не знаю почему, но оно прекратило фурычить. Может кто-нибудь подскажет, что не так или предложит другой вариант.

2. Есть ли универсальное средство для решения цепочки редиректов? Я видел подобные вопросы здесь, но их чаще игнорят. В моём случае хотелось бы переходить с http://www.сайт.ru -> https://сайт.ru. Сейчас же у меня это занимает 2 редиректа. Если общего решения по поводу цепочек нет, то может кто подскажет  хотя бы по   http://www.сайт.ru -> https://сайт.ru

мой htaccess:

Options +FollowSymLinks

RewriteEngine On


#проба

RewriteCond %{REQUEST_URI} ^/products/(.+)/(.+)$

RewriteRule ^products/(.*)$ /products/%2 [R=301,L]


# c www на без

RewriteCond %{HTTP_HOST} ^www.сайт\.ru$ [NC]

RewriteRule ^(.*)$ https://сайт.ru/$1 [R=301,L]


# http на https уже есть


#нижний регистр

RewriteRule [A-Z] - [E=HASCAPS:TRUE,S=1]


RewriteRule ![A-Z] - [S=28]


RewriteRule ^([^A]*)A(.*)$ $1a$2

RewriteRule ^([^B]*)B(.*)$ $1b$2

RewriteRule ^([^C]*)C(.*)$ $1c$2

RewriteRule ^([^D]*)D(.*)$ $1d$2

RewriteRule ^([^E]*)E(.*)$ $1e$2

RewriteRule ^([^F]*)F(.*)$ $1f$2

RewriteRule ^([^G]*)G(.*)$ $1g$2

RewriteRule ^([^H]*)H(.*)$ $1h$2

RewriteRule ^([^I]*)I(.*)$ $1i$2

RewriteRule ^([^J]*)J(.*)$ $1j$2

RewriteRule ^([^K]*)K(.*)$ $1k$2

RewriteRule ^([^L]*)L(.*)$ $1l$2

RewriteRule ^([^M]*)M(.*)$ $1m$2

RewriteRule ^([^N]*)N(.*)$ $1n$2

RewriteRule ^([^O]*)O(.*)$ $1o$2

RewriteRule ^([^P]*)P(.*)$ $1p$2

RewriteRule ^([^Q]*)Q(.*)$ $1q$2

RewriteRule ^([^R]*)R(.*)$ $1r$2

RewriteRule ^([^S]*)S(.*)$ $1s$2

RewriteRule ^([^T]*)T(.*)$ $1t$2

RewriteRule ^([^U]*)U(.*)$ $1u$2

RewriteRule ^([^V]*)V(.*)$ $1v$2

RewriteRule ^([^W]*)W(.*)$ $1w$2

RewriteRule ^([^X]*)X(.*)$ $1x$2

RewriteRule ^([^Y]*)Y(.*)$ $1y$2

RewriteRule ^([^Z]*)Z(.*)$ $1z$2


RewriteRule [A-Z] - [N]

RewriteCond %{ENV:HASCAPS} TRUE

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


# (//) убираем

RewriteCond %{THE_REQUEST} \s[^?]*//

RewriteRule ^.*$ /$0 [R=301,L,NE]


# (/) в конце 

RewriteCond %{REQUEST_URI} /+[^.]+$

RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]


# редирект с index и main

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm|pl)\ HTTP/ 

RewriteRule ^(.*)index\.(php|html|htm|pl)$ $1 [R=301,L] [OR]


RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /main\.(php|html|htm|pl)\ HTTP/

RewriteRule ^(.*)main\.(php|html|htm|pl)$ $1 [R=301,L]



txt 23.txt
W1
На сайте с 22.01.2021
Offline
145
#198
xersgor #:
В моём случае хотелось бы переходить с http://www.сайт.ru -> https://сайт.ru. Сейчас же у меня это занимает 2 редиректа. Если общего решения по поводу цепочек нет, то может кто подскажет  хотя бы по   http://www.сайт.ru -> https://сайт.ru

В htaccess у вас нет никаких цепочек. Судя по строке  "# http на https уже есть", редирект прописан в конфигурации сервера до  htaccess . Поэтому если хотите сделать без цепочек, то уберите редирект из конфигурации сервера и пропишите в  htaccess.

X
На сайте с 12.10.2021
Offline
0
#199
webinfo #:

В htaccess у вас нет никаких цепочек. Судя по строке  "# http на https уже есть", редирект прописан в конфигурации сервера до  htaccess . Поэтому если хотите сделать без цепочек, то уберите редирект из конфигурации сервера и пропишите в  htaccess.

Понял.  Мне же придется прописывать переход с http -> https в htaccess, после отключения на сервере. Он же их будет видеть как 2 правила, а не одно. И цепочка всё равно останется. Или я ошибаюсь?          Спасибо за прошлый ответ)

W1
На сайте с 22.01.2021
Offline
145
#200
xersgor #:
Он же их будет видеть как 2 правила, а не одно. И цепочка всё равно останется. Или я ошибаюсь? 

Чтобы не было цепочки, нужно соблюсти последовательность. Сначала прописываете правило для www, потом общее правило.

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