Да. В основном вы захотите передать весь URL-адрес через скрипт маршрутизатора с помощью mod_rewrite. Файл .htaccess должен иметь что-то вроде этого:
RewriteEngine On
RewriteBase/
#if it's an existing directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
#...or an existing file
RewriteCond %{REQUEST_FILENAME} -f
#serve it up
RewriteRule ^(.+) - [PT,L]
#else, direct to index.php
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
Тогда, в index.php вы можете иметь что-то вроде этого:
$request = explode('/', $_GET['url']);
Какой бы иметь все ваши чистые сегменты URL-адрес в массиве $ запроса , Когда у вас есть эти значения, вы можете подключиться к базе данных, найти то, что представляет URL, и выводить страницу. Если он не найден, вы можете отправить заголовок 404 с сообщением «Страница не найдена».
header('HTTP/1.0 404 Not Found');
echo '<p>Page not found</p>';
Итак, это базовая чистая техника url. Если URL-адрес является ранее, грязный один, вы бы просто добавить некоторую логику, чтобы проверить, что и перенаправлять на правильный чистый URL:
if(isset($_GET['cat'])){
//put some logic here
header("Location: http://localhost/".$the_clean_url);
}
Эта базовая техника должна решить вашу проблему с некоторыми лужения.