URL-адреса в стиле REST и PHP
Мне очень трудно разобраться в использовании URL-адресов в стиле REST. Могу я получить небольшую помощь в этом? Прямо сейчас у меня есть строка запроса примерно так:
example.com/calendar_expanded?date=1270094400
У меня есть переписанный мод, который скрывает расширение .php. Как мне
- Сделай так, чтобы это
calendar_expanded/date/1270094400
произошло. -
$_GET
значения из URL-адреса после факта?
Мне нравится концепция, лежащая в ее основе, но работа по 16 часов в день, чтобы уложиться в срок в течение целого месяца, сказывается на моем мозг.
Спасибо за помощь.
3 answers
Если вы хотите создать довольно много URL-адресов REST, вам следует рассмотреть возможность использования фреймворка PHP, который использует шаблон проектирования Фронт-контроллера.
Таким образом, каждый запрос обрабатывается платформой, и вы можете гибко создавать свои URL-адреса так, как они должны выглядеть.
Например, Symfony поддерживает спокойный дизайн из коробки.
Кстати, URL-адреса RESTful имеют смысл только в том случае, если параметры каким-то образом фиксированы и указывают ресурс, например название поста в блоге. Если вы хотите передать параметр только для того, чтобы, например, управлять сортировкой таблицы (т. Е. Представлением чего-либо), то это должно быть "обычным" параметром GET в строке запроса.
В вашем случае, похоже, вы хотите контролировать, какой день должен отображаться в календаре. Я лично просто использовал бы здесь обычную строку запроса GET.
Вам нужно проверить $_SERVER[ 'REQUEST_URI' ]
или $_SERVER[ 'PATH_INFO' ]
, не $_GET
.
$_SERVER[ 'REQUEST_URI' ]
будет держать это /calendar_expanded/date/1270094400?quertStringParams=1&etc...
$_SERVER[ 'PATH_INFO' ]
будет держать это /calendar_expanded/date/1270094400
Другими словами, вам придется разбить эти значения на отдельные сегменты, используя explode()
и подобные. Я предлагаю вам использовать $_SERVER[ 'PATH_INFO' ]
в качестве темы, так как реальные переменные строки запроса уже будут доступны в $_GET
.
Это то, что ты ищешь?
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ calendar_expanded.php?url=$1 [QSA,L]
</IfModule>
Это то, что я помню, как делал CakePHP, когда он впервые вышел... не знаю, работает ли он до сих пор...