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

01 Марта 2016
htaccess

Для того чтобы привести 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]