Редирект убирать index php

Настройка редиректов в htaccess

Как сделать seo редиректы на www или без него, добавление/удаление расширений у страниц.

Добавить www

Для http:

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

Для https:

RewriteCond % !^www. RewriteRule (.*) https://www.%/$1 [R=301,L]

Удалить www

Для http:

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

Для https:

RewriteCond % ^www\.(.*) [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

Добавление слеша в конец URL

RewriteBase / RewriteCond % !-f RewriteCond % !\.xml RewriteCond % !(.*)/$ RewriteRule ^(.*[^/])$ $1/ [L,R=301]

Иногда не работает с кириллическими доменами, возможен еще вариант:

RewriteCond % !-f RewriteCond % !\.xml RewriteCond % !(.*)/$ RewriteRule ^(.*)$ http://xn--80aswg.xn--p1ai/$1/ [L,R=301] # Для https: RewriteCond % !-f RewriteCond % !\.xml RewriteCond % !(.*)/$ RewriteRule ^(.*)$ http://xn--80aswg.xn--p1ai/$1/ [L,R=301]

Удаление слеша в конце URL

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

Удаление повторяющихся слешей

Если нужно убрать несколько слешей, например https://example.com/sections///////// или https://example.com/////////sections/ .

RewriteCond % ([^\s]*)\/(\?[^\s]*)? RewriteRule (.*) %1 [R=301,L]

Редирект с index.php

RewriteCond % ^.*/index.php RewriteRule (.*) http://% [R=301,L]

Для https:

RewriteCond % ^.*/index.php RewriteRule (.*) https://% [R=301,L]

Редирект .htm на .html

RewriteBase / RewriteCond % !-f RewriteCond % !-d RewriteCond % \.htm$ RewriteRule ^(.*)\.htm$ $1.html [R=301,L]

Замена .html на слеш

RewriteBase / RewriteCond % !-f RewriteCond % !-d RewriteCond % \.html$ RewriteRule ^(.*)\.html$ $1/ [R=301,L]

Если расширение не .html то 404

RewriteCond % !-f RewriteCond % !-d RewriteCond % !\.html$ RewriteRule ^(.*)$ index.php?route=404 [L,QSA]

Редирект с одного домена на другой

Если к сайту привязаны несколько доменов, то следует сделать 301-й редирект на основной (например example.com на example.ru):

RewriteEngine On RewriteCond % example.com RewriteRule ^(.*)$ https://example.ru/$1 [R=301,L]

Источник

Читайте также:  Java 64 бит на русском

Как убрать 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 через .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.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 из урла?

но при этом со страниц типа site.ru/uslugi/index.php на site.ru/uslugi (без index.php) у меня не делается. Подскажите, как это можно сделать?

RewriteEngine On # Директива включает редиректы. RewriteBase / # Без директивы (.*) = /$1 будет /var/wwww/site/$1 с ней = /$1 ############################################################################ #### Убираем index.php, если он есть в конце URL #### ############################################################################ RewriteCond % =GET #Выявляем GET запрос в URL (не POST) RewriteCond % ^(.*)/index\.php$ #URL cодержит index.php в конце. RewriteRule ^(.*)$ %1/ [R=301,L] #Удалить index.php из URL.

При этих правилах редирект происходит, но url c site.ru/uslugi/ меняется на site.ru/?q=uslugi/. Как быть?

#RewriteCond % =GET #RewriteCond % ^(.*)/index\.php$ #RewriteRule ^(.*)$ %1/ [R=301,L]
#RewriteCond % =GET #RewriteCond % ^(.*)/index\.php$ #RewriteRule ^(.*)/index\.php$ $1 [R=301,L]

А вся эта свистопляска потому, что site.ru/uslugi/index.php и site.ru/uslugi/ открывают одну и туже стр. и тем самым делают дубль, что для seo плохо.

При этих правилах редирект происходит, но url c site.ru/uslugi/ меняется на site.ru/?q=uslugi/. Как быть?

При этом варианте, отрабатывается site.ru/index.php, но редиректа с site.ru/uslugi/index.php не происходит.

ShamblerR: я посмотрю настройки чпу в modx cmf еще раз, но практически на 80% уверен, что этот вопрос нужно решать с помощью 301 в .htaccess

в joomla 1.5 можно было настрочить ЧПУ с админки с панели управления 4 галочками, не думаю что сейчас модикс не умеет этого делат, вот честно

Могу утверждать что сейчас MODx лучше даже чем Joomla 3.0 и чпу там очень легко настраивается. И на сайте где я провожу свои манипуляции чпу настроить и работает нормально. Проблема как я уже и говорил в 301 редиректе и соответственно в дублях.

2. Если одна и та же страница открывается по адресам site.ru/uslugi.html, site.ru/uslugi/, site.ru/uslugi. Решается: RewriteRule (.+)\.html$ /$1/ [L,R] RewriteCond % !-f RewriteCond % !(.*)/$ RewriteCond % !(.*)sitemap.xml$ RewriteRule ^(.*[^/])$ $1/ [L,R=301]
3. Если одна и та же страница открывается по адресам site.ru/uslugi/ и site.ru/uslugi/index.php. Решается: RewriteCond % ^.*/index\.php RewriteRule ^(.*)index.php$ /$1 [R=301,L] #вот в этих двух строчках я и нуждался

Источник

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