Как изменить внешний вид URL-адреса из PHP скрипт

У меня есть PHP и HTML в одном файле, и я не совсем уверен, как сделать URL-адрес отображаемым как имя этой страницы.

Вот пример того, что я хотел бы сделать: допустим, что некоторая страница id = 1, а заголовок этой страницы - HelloWorld.

Вместо site.com/page.php?id=1 я хотел бы, чтобы URL-адрес отображался как site.com/HelloWorld

Но проблема, с которой я столкнулась, заключается в том, что я узнаю только название страницы внутри этой страницы после запроса заголовка по id.

Учитывая настройку, которую я описал, есть ли способ заставить URL-адреса отображаться как имена страниц? А также, если кто-то ссылается на эту страницу, используя лучший URL-адрес с именем страницы, а не id, есть ли еще способ получить идентификатор и тем самым остальную часть содержимого страницы?

Спасибо!!

Ответ 1

Вам нужно узнать больше о работе .htaccess.

Вот хорошая ссылка, которая начала меня:

htaccess трюки и советы

Обновление:

Вот очень распространенная практика во многих рамках, где все запросы отправляются в index.php, а оттуда вы используете php для обслуживания правильной страницы:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://www.site.com/index.php [L,R=301]
</IfModule>

Ответ 2

Это на самом деле функция вашего HTTP-сервера (часто Apache), а не PHP.

То, что вы видите на сайтах с "дружественными" URL-адресами, заключается в том, что дружественное имя фиксируется в регулярном выражении, а затем передается PHP.

Например:

GET /HelloWorld

отправляется на ваш веб-сервер.. веб-сервер анализирует его

RewriteCond ^(A REGULAR EXPRESSION TO CAPTURE YOUR FRIENDLY NAME)$
RewriteRule page.php?id=(EXPRESSION FROM ABOVE)

Таким образом, ваш PHP script всегда будет получать дружественное имя в качестве параметра.

Взгляните на "mod_write" для Apache - вы часто можете создавать правила для использования файла ".htaccess" в корневом каталоге.