Ученик (105)

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

Например, чтобы вместо site.ru/index.php?name=vasya&surname=pupkin было, например, site.ru/pupkin/vasya ?
Регистрируйтесь, делитесь ссылками в соцсетях, получайте на WMR кошелек 20% с каждого денежного зачисления пользователей, пришедших на проект по Вашей ссылке. Подробнее
После регистрации Вы также сможете получать до 75 руб за каждую тысячу уникальных поисковых переходов на Ваш вопрос или ответ Подробнее
ОТВЕТЫ
Знаток (425)
В .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;
}


Ну вот так примерно!
Знаток (425)
Да, только еще сервер надо настроить - для Apache в httpd.conf должна быть строка LoadModule mod_rewrite.so, для Вашей директории должно быть AllowOverride All.
Знаток (425)
Вообще, описанный выше подход не вполне кошерен и годится лишь для эксперимента. Более круто было бы настраивать ВСЕ 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