Как убрать php из URL адреса?

Допустим, у вас есть статический веб-сайт с различными 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. Мы используем  следующую структуру определения:

  1. RewriteRule, за которым следует имя, которое вы хотите использовать;
  2. После имени из пункта выше, следует фактический путь к странице .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 в конце и сделает вывод приятным и простым.

Подписаться на новые статьи