Как спрятать GET параметр

Для того чтобы привести url вашего сайта например: из вида domain.ru/projects/?id=3 в domain.ru/projects/3 нужно правильно настроить файл .htaccess

  1. если такого файла у вас на сервере нет, то смело создаем его, важно понимать, файл .htaccess действует на те файлы и папки которые находятся на одном уровне с ним и выше
  2. включаем режим редактирования url RewriteEngine on, просто добавляем эту строчку в файл .htaccess
  3. добавляем строчку отвечающую за обработку url с domain.ru/projects/?id=3 на domain.ru/projects/3RewriteRule ^projects/([-0-9])$ projects/?id=$1, где ^projects/([-0-9])$ это конечный результат ([-0-9] подразумевает что переменная $_GET["id"] содержет только цифры и дефис), а projects/?id=$1 начальный вид

В итоге у нас файл .htaccess будет иметь такой вид:

RewriteEngine On
RewriteRule ^projects/([-0-9])$ projects/?id=$1

Таким способом можно спрятать сразу 2-3 и более параметров, например:

RewriteRule ^projects/([0-9]+)/([-a-z0-9_!-]+)$ /projects/?page=$1&filter=$2

Здесь мы скрыли номера страниц page и одновременно значение filter, в итоге путь примет вид неdomain.ru/projects/?page=3&filter=sort, а domain.ru/projects/3/sort

Вот еще парочка примеров:

Переделываем projects.php?id=3 в projects-3.html

RewriteRule ^product-([0-9]+)\.html$ product.php?id=$1

Перенаправление адресов без www URL на адреса с www

RewriteCond %{HTTP_HOST} ^domain\.ru$
RewriteRule (.*) http://www.domain.ru/$1 [R=301,L]