Почему со страниц ЧПУ каталога редиректит на /bitrix/urlrewrite?

Доброго времени суток,

Тут такая проблема образовалась, переехали с одного домена на другой (первый был кириллический). Типа было пд.рф, теперь pd.info.

На пд.рф, в htaccess прописал:
RewriteRule (.*) https://pd.info/$1 [R=301,L]

Все бы ничего, работает исправно, кроме одного момента. Есть страница с каталогом, на котором настроен ЧПУ:
пд.рф/katalog/item-one/
И по хорошему, оно должно редиректить на
pd.info/katalog/item-one/
Страница такая есть. Но редиректит по факту на:
pd.info/bitrix/urlrewrite.php

В чем беда? Как решить?
  • Вопрос задан
  • 4000 просмотров
Решения вопроса 1
shambler81
@shambler81 Куратор тега htaccess
1. домен с русским именем это не проблемам
https://r01.ru/domain/whois/instruments/converter.php
2. Пропиши домен пд.рф алиасом к новому домену.
3. я тут немного подшаманил твой конфиг
<IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On
  Options +FollowSymLinks
  php_flag display_errors off
  # запретить отображение ошибок  (требование монитора качества)
  php_flag allow_url_fopen off
  # запретить  использовать удаленые файлы (требование проактивной защиты)

</IfModule>
############################################################################
#### Выбор основного зеркала (с www или без www) с сохранением пртокола ####
############################################################################
 
RewriteCond %{ENV:HTTPS} on
    #Если включен https
RewriteRule .* - [E=SSL:s]
    #То создаем переменную  "ssl" с текстом s
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
    # Проверяем, содержит ли домен www в начале URL.
RewriteRule ^(.*)$ http%{ENV:SSL}://%1/$1 [R=301,L]
    # Перенаправляем удаляем www    если протокол https то подставляется буква s

############################################################################
#### редирект с  алиаса к сайту                                         ####
############################################################################
RewriteCond %{HTTP_HOST} !^www(.|)pd\.info$ [NC]
RewriteRule ^(.*)$ https://pd.info/$1 [R=301,L]


############################################################################
#### Перенаправляем протокол http на https                              ####
############################################################################
RewriteCond %{HTTP:X-HTTPS} !1
   # Проверяем наличие https в URL.
# RewriteCond %{ENV:HTTPS} !on  
   # закоментировал свое условие, вставил твое, от сервера зависит какое лучше использовать. 
RewriteCond %{REQUEST_FILENAME} !^/\.well-known(.*)$
  #   если нет well-known, не знаю зачем тебе это но вставил
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
   # Перенаправляем протокол на http.

############################################################################
#### Убираем слеши в конце URL для статических файлов (содержит точку)  ####
############################################################################
RewriteCond %{REQUEST_URI} \..+$
   # Если файл содержит точку.
RewriteCond %{REQUEST_FILENAME} !-d
   # И это не директория.
RewriteCond %{REQUEST_FILENAME} -f
   # Является файлом.
RewriteCond %{REQUEST_URI} ^(.+)/$
   # И в конце URL есть слеш.
RewriteRule ^(.+)/$ /$1 [R=301,L]
   # Исключить слеш.

############################################################################
#### Добавляем слеш(/), если его нет, и это не файл.                    ####
############################################################################
RewriteCond %{REQUEST_URI} !(.*)/$
   # Если слеша в конце нет.
RewriteCond %{REQUEST_FILENAME} !-f
   # Не является файлом.
RewriteCond %{REQUEST_URI} !\..+$
   # В URL нет точки (файл).
RewriteRule ^(.*)$ $1/ [L,R=301]
   # Добавляем слеш в конце.

############################################################################
#### Убираем index.php, если он есть в конце URL                        ####
############################################################################
RewriteCond %{REQUEST_METHOD} =GET
   # Выявляем GET запрос в URL (не POST).
RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
   # URL cодержит index.php в конце.
RewriteRule ^(.*)$ %1/ [R=301,L]
   # Удалить index.php из URL.
############################################################################
#### Компрессия статического контента для гугл  спид тест               ####
############################################################################
<IfModule mod_deflate.c>
  AddType image/svg+xml .svg
  AddOutputFilterByType DEFLATE image/svg+xml  
  AddOutputFilterByType DEFLATE application/rss+xml
  AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
  AddOutputFilterByType DEFLATE application/x-font
  AddOutputFilterByType DEFLATE application/x-font-opentype
  AddOutputFilterByType DEFLATE application/x-font-otf
  AddOutputFilterByType DEFLATE application/x-font-truetype
  AddOutputFilterByType DEFLATE application/x-font-ttf
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/xhtml+xml
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE font/opentype
  AddOutputFilterByType DEFLATE font/otf
  AddOutputFilterByType DEFLATE font/ttf
  AddOutputFilterByType DEFLATE image/svg+xml
  AddOutputFilterByType DEFLATE image/x-icon
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/javascript
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE text/xml
  AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
<IfModule mod_expires.c>
  ExpiresActive on
  ExpiresByType image/jpeg "access plus 3 day"
  ExpiresByType image/svg "access plus 3 day"
  ExpiresByType image/gif "access plus 3 day"
  ExpiresByType image/png "access plus 3 day"
  ExpiresByType text/javascript "access plus 3 day"
  ExpiresByType text/css "access plus 3 day"
  ExpiresByType application/javascript "access plus 3 day"
</IfModule>

############################################################################
#### Антивирус, только для 1С-Битрикс,                                  ####
############################################################################
   #php_value auto_prepend_file "/home/bitrix/ext_www/SITE.RU/bitrix/modules/security/tools/start.php"
   #  укажите путь до файла 
   # включить тут /bitrix/admin/security_antivirus.php?lang=ru

<IfModule mod_rewrite.c>
  # Безопасность
  RewriteRule ^composer\.(json|lock)$ / [R=404,L]
  RewriteRule ^vendor(.*)$ / [R=404,L]
  RewriteRule ^(.*)\.(idea|git|gitmodules|gitignore|htaccess|vagrant)$ / [R=404,L]
  RewriteRule ^deploy-config\.json$ / [R=404,L]
  # Bitrix
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
  RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
  RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>

Теперь почему не отрабатыает твой редирект.
Поскольку он идет до ЧПУ
ПО сути тебе нужно повторить его и после ЧПУ
или внести исключение в ЧПУ битрикса
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
OAPrilepa
@OAPrilepa
Frontend developer
<IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On
  # Переадресация с второстепенных доменов
  RewriteCond %{HTTP_HOST} !^pd\.info$ [NC]
  RewriteRule ^(.*)$ https://pd.info/$1 [R=301,L]
  # SSL
  RewriteCond %{REQUEST_FILENAME} !^/\.well-known(.*)$
  RewriteCond %{HTTP:X-HTTPS} !1
  RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
  # Переадресация с добавлением / в конце
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^([^.]+)(?<!/)$ /$1/ [R=301,L]
  # Переадресация с домена с WWW на домен без WWW
  RewriteCond %{HTTP_HOST}	^www\.(.*)	[NC]
  RewriteRule ^(.*)$ https://%1/$1	[R=301,L]
  # Переадресация с index.php на /
  RewriteCond %{REQUEST_FILENAME} ^(.*)/index\.php$
  RewriteRule ^(.*)index\.php(.*)$ /$1$2 [R=301,L]
  # Безопасность
  RewriteRule ^composer\.(json|lock)$ / [R=404,L]
  RewriteRule ^vendor(.*)$ / [R=404,L]
  RewriteRule ^(.*)\.(idea|git|gitmodules|gitignore|htaccess|vagrant)$ / [R=404,L]
  RewriteRule ^deploy-config\.json$ / [R=404,L]
  # Bitrix
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
  RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
  RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы