- if0rest / .htaccess.md
- Автоматически убираем index.php через .htaccess
- Как забирать окончание /index.php в Битриксе
- Забирать окончание /index.php через .htaccess
- Как убрать index.html из URL
- Как убрать index.html или index.php через .htaccess
- Избавляемся от index.php в адресах
- Настройка индексной страницы в 1С Битрикс
- 301 редирект с /index.php на / в .htaccess
- 301 редирект с /index.php на / в nginx
if0rest / .htaccess.md
Понадобится служебный файл .htaccess, находящийся в корне файлов Вашего сайта, в котором нужно прописать следующие строчки кода:
RewriteCond % !^$ # Список разрешенных ресурсов, вместо site.ru пропишите свой домен RewriteCond % !^http(s)?://(www.)?__ВАШ_САЙТ__.ru.*$ [NC] RewriteCond % !^http(s)?://(www.)?yandex.ru [NC] RewriteCond % !^http(s)?://(www.)?google. [NC] RewriteCond % !^http(s)?://(www.)?msn. [NC] RewriteCond % !^http(s)?://(www.)?yahoo. [NC] RewriteCond % !search?q=cache [NC] # Список запрещенных форматов для хотлинка RewriteRule \.(jpe?g|png|bmp|gif|css|zip|pdf|txt|doc)$ - [NC,F,L]
Происходит определение HTTP_REFERER клиента. Если это не поисковая система, соединение блокируется, выдавая 403 ошибку.
AddDefaultCharset utf-8 # Запрет листинга каталогов. Вернет 503 Forbidden. Можно разрешить локальный листинг, создавая .htaccess в нужной дирректории. Т.о. листинг распространяется и на подкаталоги: Options -Indexes # Осторожно и на свой риск. При запросе без указания расширения файла вернет одноименный файл с любым расширением. По умолчанию '-' Options +Multiviews # Переопределение индексного файла: чтобы сервер искал не index.*, а к-то другой (даже картинку) DirectoryIndex another_file.php # Стилизация листинга IndexOptions FancyIndexing # Добавляет в листинге данные для графы Description IndexOptions FancyIndexing ScanHTMLTitles # Позволяет скрывать файлы опр. расширений или опр. файлы в листинге IndexIgnore *.zip *.rar hide_it.txt # Пустой листинг IndexIgnore * # Для поддержки автономных веб-приложений файлу .appcache добавляется MIME-тип, чтобы сервер отправлял правильный файл-манифест AddType text/cache-manifest .appcache
Автоматически убираем 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]
Надеюсь вы решили вашу задачу!
Как убрать index.html из URL
Предположим, вы заказали бесплатный хостинг для сайтов html в Рег.ру. По умолчанию когда вы открываете сайт в браузере, веб-сервер указывает в конце домена название индексного файла «index.html» или «index.php». Это негативно сказывается на поисковой позиции сайта. Для успешного продвижения в поисковых системах потребуется настройка переадресации с удалением «index.html» или «index.php» в конце адреса вашего сайта. Например, перенаправление с сайта «faq-reg.ru/index.html» на «faq-reg.ru»
Как убрать index.html или index.php через .htaccess
Откройте файл .htaccess в корневой директории сайта. Если у вас нет этого файла воспользуйтесь справкой: У меня нет файла .htaccess, что делать?
RewriteEngine On RewriteRule ^index\.html$ / [R=301,L]
RewriteEngine On RewriteRule ^index\.php$ / [R=301,L]
Если у вас несколько файлов index.html в разных папках, например, faq-reg.ru/support/index.html, вы можете убрать index.html из адресной строки, применив правило:
RewriteEngine On RewriteRule ^index\.html$ / [R=301,L] RewriteRule ^(.*)/index\.html$ /$1/ [R=301,L]
Если у вас несколько файлов index.php в разных папках, например, faq-reg.ru/support/index.php, вы можете применить правило:
RewriteEngine On RewriteRule ^index\.php$ / [R=301,L] RewriteRule ^(.*)/index\.php$ /$1/ [R=301,L]
Готово, после внесения правила в .htaccess ваш сайт будет открываться без index.html или index.php в конце URL.
Избавляемся от 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