Как избавиться от index.php в УРЛ страницы Джумлы



После установки такой популярной CMS как джумла, у многих встаёт вопрос как избавиться от злосчастного index.php в урл странице. Многие "Умельцы" предлагают избавить от index.php с помощью перенаправления в файле .htaccess,ч то абсолютно неправильно.

Я предлагаю иной вариант решения проблемы index.php

1. Для начала нужно удостовериться, что у вас включён режим ЧПУ в основных настройках Joomla. Для этого необходимо зайти в общие настройки, и включить опцию SEF ЧПУ. Обычно этого недостаточно, что index.php пропал из строки URL.





2. Переименование файл .htacess.txt, тоже очень важен, так как без этого файла у вас не будут работать "красивые" ссылки. Файл .htaccess никак не влияет на присутствие index.php в урл страницы. Для этого заходим по ftp в главную директорию с CMS Joomla и переименовываем файл "htacess" txt в ".htaccess".




3. Самый последний штрих, это избавиться от index.php в самом php коде библиотеке "Route".

Заходим в папку /public_html/libraries/cms/router, затем с помощью текстового редактора открываем файл site.php.



Для соединения с ftp протоколом используйте программу Filezilla. В этом файле есть функция build отвечающая за формирование URl, находим следующий код:


if ($this->app->get('sef_rewrite'))
{
// Transform the route
if ($route == 'index.php')
{
$route = '';
}
else
{
$route = str_replace('index.php/', '', $route);
}
}
}



После последней кавычки  "}" дописываем следующий код:

$route = str_replace(array('index.php','index.php/'), '', $route);


Если всё сделано правильно, в URL страницы пропадёт строка index.php/.

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

Если для вас имеет значение оптимизация сайта, в robots.txt необходимо сообщить поисковым роботам, что страницы с index.php индексировать не нужно. Для этого достаточно прописать следующий код:

User-Agent: *
Disallow: index.php*

Так же я рекомендую не индексировать УРЛ, в которых имеется знак вопроса (?). Дело в том, что даже при включённом ЧПУ, данные ссылки всё-равно работают, например /index.php?option=com_sppagebuilder&view=page&id=17. Чтобы не индексировать такие ссылки про пропишем в robots.txt следующий код:

User-Agent: *
Disallow: index.php*
Disallow: /?

Прошу заметить, что делать подобную конструкцию нужно перед началом работы с CMS Joomla, иначе вы можете потерять много трафика если не сделать перенаправление.

301 редирект с index.php при помощи .htaccess

Мы с вами избавились от строчки index.php, но это не значит, что данные ссылки не работают. Чтобы строка вида index.php/razdel/tovar перестала работать, и роботов перенаправляло на /razdel/tovar необходимо добавить пару строчек в конец файла .htaccess

RewriteCond %{REQUEST_URI} ^(.*)index.php(.*)$
RewriteRule ^(.*)index.php/(.*)$ $1/$2 [R=301,NC,L]


Если перенаправление делать не нужно, и пользователям а также роботам сообщать о недоступности страницы, достаточно изменить код ошибки, например на 404.

RewriteCond %{REQUEST_URI} ^(.*)index.php(.*)$
RewriteRule ^(.*)index.php/(.*)$ $1/$2 [R=404,NC,L]


Как будет выглядеть .htaccess файл после добавления строчки, обратите внимание, что я избавился от строчек с комментариями вида #Какой-то текст:



301 редирект с index.php при помощи php

Редирект можно сделать и с помощью php, для этого отрываем файл index.php в главной директории сайта и прописываем вверху после строки <?php следующий код:

if(strpos($_SERVER['REQUEST_URI'],'index.php' ) !==false){

$query=str_replace('index.php/','',$_SERVER['REQUEST_URI']);

header('HTTP/1.1 301 Moved Permanently');

header('Location: http://Ссылка на ваш сайт'.$query);
}




На этом я думаю можно закончить урок, ведь я указал все пункты которые необходимы для неприятной проблемы связанные с этим известным движком.

Тебе нравится?

Похожие вопросы