Көмек

Қайта бағыттау ережелерін баптау

Бұл мақалада веб-сайтыңыздағы .htaccess файлы арқылы баптауға болатын стандартты қайта бағыттаулардың мысалдары келтірілген.

Көрсетілген қайта бағыттаулар келесі жағдайларда жұмыс істейді:

  • Apache веб-сервері қолданылатын VPS конфигурацияларының көпшілігінде (mod_rewrite модулі қосулы болуы қажет);
  • Аккаунтты басқару панелі арқылы орнатылған VestaCP немесе ISPmanager бар серверлерде. ISPmanager-де қарапайым қайта бағыттауларды панель құралдарымен де баптауға болады.

Бұл редиректтер OS Bitrix7 үшін жарамайтынын ескеріңіз.

Директиваларды .htaccess файлындағы <IfModule mod_rewrite.c> блогында келесідей көрсету қажет:

<IfModule mod_rewrite.c>
Options +FollowSymLinks 
RewriteEngine on 
# Сіздің ережелеріңіз 
</IfModule>

Ереже ретінде қажетті мәндері бар RewriteCond және RewriteRule директиваларын пайдалана аласыз. RewriteCond RewriteRule ішінде көрсетілген ереже орындалатын шартты анықтайды.

Басқа доменге қайта бағыттау

Төменде www.old-domain.ru мекенжайынан www.new-domain.ru мекенжайына қайта бағыттау мысалы келтірілген:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(www\.)?old-domain\.ru$ 
RewriteRule ^(.*)$ http://www.new-domain.ru/$1 [R=301,L]

HTTP-ден HTTPS-ке қайта бағыттау

1. http://example.ru мекенжайынан https://example.ru мекенжайына қайта бағыттау.

RewriteBase / 
RewriteCond %{HTTPS} !on 
RewriteCond %{HTTP_HOST} ^example.ru$ 
RewriteRule ^(.*)$ https://example.ru/$1 [R=301,L]

1a. VestaCP панелі бар серверлер үшін:

RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

1b. Егер ISPmanager басқару панелі бар сервер пайдаланылып, Nginx жұмыс істеп тұрса, қайта бағыттау үшін келесі ережені қолданыңыз:

RewriteBase / 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

2. http://example.ru мекенжайынан https://www.example.ru мекенжайына қайта бағыттау үшін келесі ережені пайдаланыңыз:

RewriteBase / 
RewriteCond %{HTTPS} !on 
RewriteCond %{HTTP_HOST} ^example.ru$ 
RewriteRule ^(.*)$ https://www.example.ru/$1 [R=301,L]

3. Егер http://www.forum.example.ru мекенжайынан https://forum.example.ru мекенжайына қайта бағыттау қажет болса, мына ережелерді пайдаланыңыз:

RewriteCond %{HTTP_HOST} ^www\.forum\.example\.ru$ [NC] 
RewriteRule ^(.*)$ https://forum.example.ru/$1 [R=301,L] 
RewriteBase / 
RewriteCond %{HTTPS} !on 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

4. http://forum.example.ru мекенжайынан https://www.forum.example.ru мекенжайына қайта бағыттау үшін келесі ережелерді пайдаланыңыз:

RewriteCond %{HTTP_HOST} ^forum\.example\.ru$ [NC] 
RewriteRule ^(.*)$ https://www.forum.example.ru/$1 [R=301,L] 
RewriteBase / 
RewriteCond %{HTTPS} !on 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

https-тен http-ге қайта бағыттау

RewriteBase / 
RewriteCond %{HTTPS} on [NC] 
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

Бір бет үшін http-ге қайта бағыттау

1-нұсқа:

RewriteBase / 
RewriteCond %{HTTPS} on [NC] 
RewriteCond %{REQUEST_URI} ^/Қажетті директория_бет$ 
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

2-нұсқа:

RewriteBase / 
RewriteCond %{HTTPS} !on 
RewriteCond %{REQUEST_URI} !^/Қажетті директория_бет$ 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] 
RewriteCond %{HTTPS} on [NC] 
RewriteCond %{REQUEST_URI} ^/Қажетті директория_бет$ 
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

Мысал: 1C-мен деректер алмасу дұрыс жұмыс істеуі үшін bitrix/admin/1c_exchange.php беті үшін https-ке қайта бағыттауды өшіру:

RewriteBase / 
RewriteCond %{HTTPS} !on 
RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$ 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] 
RewriteCond %{HTTPS} on [NC] 
RewriteCond %{REQUEST_URI} ^/bitrix/admin/1c_exchange\.php$ 
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

VestaCP басқару панелі үшін:

RewriteCond %{SERVER_PORT} !^443$ 
RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$ 
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] 
RewriteCond %{SERVER_PORT} ^443$ 
RewriteCond %{REQUEST_URI} ^/bitrix/admin/1c_exchange\.php$ 
RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Бір бет үшін https-ке қайта бағыттау

RewriteBase / 
RewriteCond %{HTTPS} !on 
RewriteCond %{REQUEST_URI} ^/Қажетті директория_бет$ 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

www-сыз доменнен www бар доменге қайта бағыттау

forum.example.ru мекенжайынан www.forum.example.ru мекенжайына редирект мысалдары.

1-тәсіл:

RewriteCond %{HTTP_HOST} ^forum\.example\.ru$ [NC] 
RewriteRule ^(.*)$ https://www.forum.example.ru/$1 [R=301,L] 

2-тәсіл, доменді көрсетпей:

RewriteCond %{HTTP_HOST} !^www\.(.*) [NC] 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

www бар доменнен www-сыз доменге қайта бағыттау

www.forum.example.ru мекенжайынан forum.example.ru мекенжайына қайта бағыттау мысалдары.

1-тәсіл:

RewriteCond %{HTTP_HOST} ^www\.forum\.example\.ru$ [NC] 
RewriteRule ^(.*)$ https://forum.example.ru/$1 [R=301,L] 

2-тәсіл:

RewriteCond %{HTTP_HOST} !^forum\.example\.ru$ [NC] 
RewriteRule ^(.*)$ http://forum.example.ru/$1 [R=301,L]

Ішкі каталогқа қайта бағыттау

forum.example.ru ішкі доменін forum ішкі каталогына қайта бағыттау:

RewriteBase / 
RewriteCond %{HTTP_HOST} ^forum\.example\.ru$ 
RewriteCond %{REQUEST_URI} !/forum/ 
RewriteRule ^(.*)$ /forum/$1 [L]

Сұрақтарыңыз бар болса, жазыңыз