Допустим, у вас есть статический веб-сайт с различными PHP файлами. При запросе, они формируют URL, такой как например — domain.com/index.php или domain.com/serviers.php и т.п, и вы хотите убрать index.php из URL, сделав ЧПУ. После этого вы задаете себе вопрос — Как убрать php из URL ? Все это можно легко исправить с помощью mod rewrite …
Как убрать php из url адреса правильно
Конечно, вы можете создать отдельную папку для каждой страницы, а затем изменить имена файлов на index.php внутри каждой из этих папок. Это будет работать, но это не очень хорошее решение, но оно имеет право на существование если сайт создается «на коленке».
Однако mod rewrite — является отличным решением для этого рода задач. Mod Rewrite позволяет переписать URL-адреса для веб-сайтов на основе Apache.
Весь необходимый код размещается внутри файла с именем .htaccess, который помещается в корневой каталог вашего проекта. Давайте, теперь создадим такой файл.
Mod rewrite как включить ?
Сначала нужно проверить, включена ли перезапись на сервере с помощью ifmodule mod rewrite c :
<IfModule mod_rewrite.c> </IfModule>
Дальнейшее размещение вашего кода внутри этой проверки означает, что он будет работать только при включенной перезаписи.
Включаем работу механизма преобразований RewriteEngine :
RewriteEngine On
При необходимости, принудительно указываем использовать HTTPS:
RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Кстати, если вы работаете локально и используете openserver, то настройку https ssl сертификата вы можете произвести используя мой мануал по ссылке из прошлых публикаций.
Устанавливаем корневой RewriteBase — базовый URL для преобразований в контексте каталога:
RewriteBase /
Теперь мы готовы определить URL-адреса, которые мы будем использовать. Именно два пункта ниже как раз и будут убирать php из url. Мы используем следующую структуру определения:
- RewriteRule, за которым следует имя, которое вы хотите использовать;
- После имени из пункта выше, следует фактический путь к странице .php
Например, следующий код уберет index php из url:
RewriteRule ^index$ index.php
С этими настройками, обращение к /about фактически загрузит /about.php, однако обратите внимание, что старый url /about.php все еще будет работать, но вы обновите все ссылки, чтобы перейти к /about.
Готовый пример перезаписи
Теперь собираем все вместе:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} RewriteBase / RewriteRule ^about$ about.php RewriteRule ^services$ services.php </IfModule>
Скопируйте код выше в свой .htaccess файл на сервере и сохраните. Теперь, при обращении к страницам файл htaccess сможет убрать расширение php в конце и сделает вывод приятным и простым.