Как работают расширенные URL-адреса

Я знаю, как эти URL-адреса загружают страницу … на основе их параметра GET.

http://www.bedupako.com/songs.php?page=show_song_details.php&songid=1167&n=0&back=no

и в back-end примерно что-то вроде этого:

<?php switch($_GET['page']) { case 'xx': include('my page');break; . . . default: include('default');break; } ?> 

Но как работают эти URL-адреса? Я имею в виду, как динамически загружаются данные?

 www.dummysite.com/parm/subpage1/xyz www.dummysite.com/parm/subpage2/xyz 

Как эти синтаксические анализа аналогичны параметрам GET как веб-сайты?

Вы можете использовать mod_rewrite самостоятельно, как предложили другие, но большинство сайтов этого не делают, потому что оно не очень гибкое и может раздражать вас, если у вас есть несколько паролей этих «хороших» URL.

Вместо этого они устанавливают базовое правило перезаписи для пересылки всего на один index.php, а затем на стороне приложения они анализируют URI на основе определенных шаблонов – они называются «маршрутами». Разбор маршрута обычно происходит в каком-то классе маршрутизации, который обрабатывает определенные маршруты и сравнивает их с URI, а затем, когда он находит совпадение, анализирует параметры для согласованного маршрута.

Все это дает хорошие примеры маршрутизатора, но их трудно понять без других взаимодействующих классов:

  • Zend: Zend_Controller_Router_Rewrite
  • Symfony: sfPatternRouting
  • Торт: Router
  • CodeIgniter: CI_Router

В большинстве случаев это будет выполняться веб-сервером «на лету» в соответствии с набором правил. Специфика этого зависит от сервера к серверу и от случая к случаю. В Apache обычно выполняется с использованием расширения mod_rewrite .

Вы должны посмотреть http://httpd.apache.org/docs/2.0/misc/rewriteguide.html переписывание URL-адресов, если вы используете apache (скорее всего)