Как изменить внешний вид 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" в корневом каталоге.