Как сделать человеко-понятный URL (ЧПУ)?

Например, чтобы вместо site.ru/index.php?name=vasya&surname=pupkin было, например, site.ru/pupkin/vasya ?
Мы платим до 300 руб за каждую тысячу уникальных поисковых переходов на Ваш вопрос или ответ Подробнее
4 ОТВЕТА
Знаток (435)
В .htaccess пишете:


RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/img/favicon.ico
RewriteRule ^(.*)$ dispatcher.php?q=$1 [L,QSA]


Вот и все - после этого все запросы будут передаваться в параметре $_GET['q'] в файл dispatcher.php. А там пишете примерно такой код:


if (isset($_GET['q']))
{
//start interpret
$params = explode("/",$_GET['q']);
$_GET['name'] = $params[0];
$_GET['surname'] = $params[1];
}


Это конкретно для Вашего случая. Но обычно интерпретация идет иначе - в зависимости от $params[0] вставляется (директивой include) необходимый файл, а передаваемые ему параметры присваиваются вручную, типа того:


if (isset($_GET['q']))
{
//start interpret
$params = explode("/",$_GET['q']);
switch ($params[0])
{
case 'param':
{
$_GET['param1'] = $params[1];
$_GET['param2'] = $params[2];
...
break;
}


Ну вот так примерно!
Знаток (435)
Да, только еще сервер надо настроить - для Apache в httpd.conf должна быть строка LoadModule mod_rewrite.so, для Вашей директории должно быть AllowOverride All.
Знаток (435)
Вообще, описанный выше подход не вполне кошерен и годится лишь для эксперимента. Более круто было бы настраивать ВСЕ Rewrite-ы в .htaccess, а не в пхп. Думаю, выше ответившие согласятся.
Помогите привести в нормальный вид URL:
/cgi-bin/profkomfort/index.pl?text=page&i=1
/cgi-bin/profkomfort/index.pl?text=page&i=2
/cgi-bin/profkomfort/index.pl?text=page&i=3
/cgi-bin/profkomfort/index.pl?text=page&i=4

У меня путаница как тут прописать????
Что куда подставить????
RewriteEngine on
RewriteCond %{REQUEST_URI} .htm$
RewriteRule ^(.+)$ %{REQUEST_URI} [C]
RewriteRule (.+)/([^/]+)/([^/]+)$ /cgi-bin$1/index.pl?text=exchanger&p=$3
ПОХОЖИЕ ВОПРОСЫ