Убрать index php bitrix

Как убрать / в конце url bitrix?

Добрый день!
Есть старый сайт и там все адреса имеют вид
www.site.ru/katalog/stoly
И есть новый сайт на битриксе
www.site-new.ru/katalog/stoly/ — обратите внимание на / в конце адреса. Как от него избавиться?

php_value mbstring.internal_encoding UTF-8 php_value default_charset utf-8 php_value opcache.revalidate_freq 0 php_value max_input_vars 10000 php_value default_socket_timeout 60 Options -Indexes ErrorDocument 404 /404.php php_flag session.use_trans_sid off #php_flag default_charset UTF-8 #php_value display_errors 1 php_flag session.use_trans_sid off #php_flag default_charset UTF-8 #php_value display_errors 1 Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond % ^test-new.ru$ [NC] RewriteRule ^(.*)$ http://www.test-new.ru/$1 [R=301,L] ############################################################################ #### Убираем index.php, если он есть в конце URL #### ############################################################################ RewriteCond % ^(.*)/index\.php$ # URL cодержит index.php в конце. RewriteCond % =GET # Выявляем GET запрос в URL (не POST). RewriteRule ^(.*)$ %1/ [R=301,L] # Удалить index.php из URL. ############################################################################ #### Убираем повторяющиеся слеши (/) в URL #### ############################################################################ RewriteCond % // # Проверяем, повторяется ли слеш (//) более двух раз. RewriteCond % !http(s|):// # Убедимся что это не урл в GET RewriteRule .* /$0 [R=301,L] # Исключаем все лишние слеши. ############################################################################ #### Убираем слеши в конце URL для статических файлов (содержит точку) #### ############################################################################ RewriteCond % \..+$ # Если файл содержит точку. RewriteCond % !-d # И это не директория. RewriteCond % -f # Является файлом. RewriteCond % ^(.+)/$ # И в конце URL есть слеш. RewriteRule ^(.+)/$ /$1 [R=301,L] # Исключить слеш. RewriteCond % ^(.*/[^/\.]+)$ RewriteRule ^(.*)$ http://%/$1/ [R=301,L] RewriteCond % !-f RewriteCond % !-l RewriteCond % !-d RewriteCond % !/bitrix/urlrewrite.php$ RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L] RewriteRule .* - [E=REMOTE_USER:%] DirectoryIndex index.php index.html ExpiresActive on ExpiresByType image/jpeg "access plus 3 day" ExpiresByType image/gif "access plus 3 day" ExpiresByType image/png "access plus 3 day" ExpiresByType text/css "access plus 3 day" ExpiresByType application/javascript "access plus 3 day" 

Простой 1 комментарий

Читайте также:  Php регулярка любой символ

Источник

Избавляемся от index.php в адресах

Например, вот эти две страницы на вашем сайте отдают один и тот же контент, что для ПС есть дубль:

Настройка индексной страницы в 1С Битрикс

В Битриксе поможет нам в этом штатная константа BX_DISABLE_INDEX_PAGE, ее описание из официальной документации:

Может принимать значение true/false. Константа регулирует значение по умолчанию для параметра get_index_page функций GetPagePath(), CMain::GetCurPage(), CMain::GetCurPageParam().
Параметр get_index_page указывает, нужно ли для индексной страницы раздела возвращать путь, заканчивающийся на «index.php». Если значение параметра равно true, то возвращается путь с «index.php», иначе — путь, заканчивающийся на «/». Параметр имеет значение, обратное значению константы.

В этом файле
/bitrix/php_interface/dbconn.php

Добавьте эту константу, в любом месте
define(«BX_DISABLE_INDEX_PAGE», true);

Все, обновите страницу в публичной части и проверяйте, во всех ссылках должна исчезнуть индексная страница index.php

Если не исчезли, пробуйте сбросить весь кэш, особенно композитный, если не помогло, то могут мешать хитрые следы разрабов или сеошников например в файле urlrewrite.php или еще хоть где.

Так мы исправили проблему в адресах сайта, но это еще не все, если вы напрямую откроете страницу
/catalog/index.php

то она также откроется, никуда не денется, на самом сервере она есть, потому что в предыдущем примере мы убрали индексную страницу только из адресов (ссылок) Битрикса, а сами страницы напрямую открываются по правилам сервера, на сервере тут сложней, разными способами можно избавляться от этого, хоть в знаменитом файле .htaccess хоть в конфигах самого nginx или apache2

301 редирект с /index.php на / в .htaccess

В корне сайта находим файл .htaccess и добавляем в нем запись где-то после RewriteEngine On

RewriteCond % ^[A-Z]\ /index\.php\ HTTP/ RewriteRule ^index\.php$ https://example.com/ [R=301,L]

Пример для сайта работающего на защищенном протоколе https:// с 301 редиректом с www на без wwww , только замените в нем адрес example.com на свой, например tuning-soft.ru

 Options +FollowSymLinks RewriteEngine On RewriteCond % ^[A-Z]\ /index\.php\ HTTP/ RewriteRule ^index\.php$ https://example.com/ [R=301,L] RewriteRule ^(.*)=(.*) /$1$2 [L,R=301] RewriteCond % ^www\.(.*) [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] RewriteCond % =off RewriteRule (.*) https://%% [QSA,L] RewriteCond % !-f RewriteCond % !-l RewriteCond % !-d RewriteCond % !/bitrix/urlrewrite.php$ RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L] RewriteRule .* - [E=REMOTE_USER:%] 

301 редирект с /index.php на / в nginx

На каждом сервере пути до конфигов могут быть совершенно разные, но в панели VESTA по умолчанию конфиги в папке пользователя по этому пути
/home/user1254/conf/web/snginx.conf

Для https|ssl это файл snginx.conf , а для http это файл nginx.conf где в секции server <. >примерно после строки set $php_sock 127.0.0.1:9018; необходимо добавить код ниже и заменить example.com

#301 редирект с www на без www if ($host = ‘www.example.com’ ) < rewrite ^(.*)$ https://example.com$1 permanent; >#301 редирект с index.php на / if ($request_uri ~* «^(.*/)index\.php$»)

Обязательно после изменений конфига nginx его необходимо перезагрузить, делается это, например, в PuTTY по SSH так:
#service nginx restart

Источник

Автоматически убираем index.php через .htaccess

Каждую страницу которая заканчивается на / можно открыть и через /index.php. Думаю, каждый более-менее уважаемый вебмастер это знает и вдаваться в подробности не стоит. Мы думаем, что это не сильная проблема как для людей, так и для поисковых роботов. Но все же, что-бы было на 100% правильно, давайте сделаем так, что если страница открывается через слэш, то ее нельзя было открыть через /index.php или /index.html. Естественно, везде должен отадаваться 301 редирект. чтобы ранее проставленные ссылки не теряли свой вес.


Результат работы скрипта

Как забирать окончание /index.php в Битриксе

Битрикс самая популярная коммерческая CMS, да и мы ее используем, поэтому давайте рассмотрим пример на ней. Многие вебмастера пытаются решить подобную задачу через php, записав код в init.php. но тут возникает 2 ошибки:

  • Редирект не будет работать при композите, потому что композит не грузит ядро битрикса;
  • Большая нагрузка на сервер, т.к. запускается Apache для редиректа.

Вообщем, правильно делать такой редирект исключительно через.htaccess файл. Откроем файл .htaccess, который лежит в корне битрикса и просто добавим 2 строчки кода. RewriteBase / нужно дописать после RewriteEngine On, а в конец всех правил добавим RewriteRule ^(.*)index\.php$ $1 [R=301,L]. Естественно, все в конструкции должно лежать. Код:

 Options +FollowSymLinks RewriteEngine On #Добавил RewriteBase / RewriteCond % !-f RewriteCond % !-l RewriteCond % !-d RewriteCond % !/bitrix/urlrewrite.php$ RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L] RewriteRule .* - [E=REMOTE_USER:%] #Добавил RewriteRule ^(.*)index\.php$ $1 [R=301,L] 

Забирать окончание /index.php через .htaccess

Если у вас не битрикс, то в корне сайта в .htaccess файле (если его нет, то создайте) нужно добавить такой код:

 RewriteEngine On RewriteBase / RewriteRule ^(.*)index\.php$ $1 [R=301,L] 

Надеюсь вы решили вашу задачу!

Источник

Форум

но не сработало. Сказывается небольшой опыт работы с битрикс.

Полный .htaccess выглядит так:

Options -Indexes ErrorDocument 404 /404.php php_flag allow_call_time_pass_reference 1 php_flag session.use_trans_sid off #php_value display_errors 1 #php_value mbstring.internal_encoding UTF-8 Options +FollowSymLinks RewriteEngine On RewriteCond % !-f RewriteCond % !-l RewriteCond % !-d RewriteCond % !/bitrix/urlrewrite.php$ RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L] RewriteRule .* - [E=REMOTE_USER:%] RewriteCond %.php -f RewriteCond % !/$ RewriteRule ^(.*)$ $1\.php DirectoryIndex index.php index.html ExpiresActive on ExpiresByType image/jpeg "access plus 3 day" ExpiresByType image/gif "access plus 3 day" 

Размещение кода наверху файла решило проблему.

RewriteEngine On
RewriteCond %.php -f
RewriteCond % !/$
RewriteRule ^(.*)$ $1\.php

Центр поддержки

Продукты

Управление сайтом

Битрикс24

Интернет-магазин + CRM

Решения

Для интернет-магазинов

Каталог готовых решений

Внедрение

Выбрать партнера

Проверить партнера

Стать партнером

1С-Битрикс http://www.1c-bitrix.ru Общие вопросы info@1c-bitrix.ru Приобретение и лицензирование продуктов : sales@1c-bitrix.ru Маркетинг/мероприятия/PR marketing@1c-bitrix.ru Партнерская программа partners@1c-bitrix.ru Мы работаем с 10:00 до 19:00 по московскому времени. Офис в Москве 127287 Россия Московская область Москва 2-я Хуторская улица дом 38А строение 9 Офис в Калининграде +7 (4012) 51-05-64 Офис в Калининграде 236001 Россия Калининградская область Калининград Московский проспект 261 Офис в Киеве ukraine@1c-bitrix.ru Телефон в Киеве +3 (8044)221-55-33 Офис в Киеве 01033 Украина Калининградская область Киев улица Шота Руставели 39/41 офис 1507

Контент для лиц от 16 лет и старше

© 2001-2023 «Битрикс», «1С-Битрикс». Работает на 1С-Битрикс: Управление сайтом. Политика конфиденциальности

Источник

Оцените статью