URL-адреса с «index.php» могут сделать ссылки вашего сайта перегруженными и менее удобными для пользователя. Удаление index.php из ваших URL-адресов не только улучшает эстетику, но и улучшает SEO, делая ваши URL-адреса более краткими и наглядными. В этой статье мы рассмотрим различные способы достижения этой цели с помощью файла.htaccess, а также примеры кода и простые пояснения.
Метод 1: использование RewriteRule
Директива RewriteRule в.htaccess позволяет перезаписывать URL-адреса на основе определенных шаблонов. Чтобы удалить «index.php» из ваших URL-адресов, добавьте следующий код в файл.htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [L]
Объяснение:
RewriteEngine Onактивирует механизм перезаписи URL.RewriteCond %{REQUEST_FILENAME} !-fпроверяет, не соответствует ли запрошенный URL существующему файлу.RewriteRule ^(.*)$ index.php/$1 [L]перезаписывает URL-адрес, добавляя все, что следует после домена, в «index.php».
Метод 2: использование DirectoryIndex
Другой способ удалить «index.php» — использовать директиву DirectoryIndex. Добавьте следующий код в свой файл.htaccess:
DirectoryIndex index.php
Объяснение:
DirectoryIndex index.phpустанавливает index.php в качестве файла по умолчанию, который будет обслуживаться при запросе каталога. Это эффективно скрывает «index.php» из URL-адреса.
Метод 3: использование PHP $_SERVER[’REQUEST_URI’]
Если у вас есть доступ к коду PHP, вы можете удалить «index.php» из URL-адреса, используя переменную $_SERVER['REQUEST_URI']. Поместите следующий код в начало файла PHP:
<?php
if (strpos($_SERVER['REQUEST_URI'], 'index.php') !== false) {
header('Location: ' . str_replace('index.php', '', $_SERVER['REQUEST_URI']));
exit();
}
?>
Объяснение:
strpos($_SERVER['REQUEST_URI'], 'index.php') !== falseпроверяет, присутствует ли в URL-адресе «index.php».str_replace('index.php', '', $_SERVER['REQUEST_URI'])удаляет «index.php» из URL-адреса.header('Location: ...')перенаправляет пользователя на обновленный URL-адрес.