Вы используете Integer
в POJO и Long
в репозитории и контроллере. Измените либо все из них, чтобы использовать Integer
или Long
.
Недавно я использовал следующее в приложении, которое хорошо работает для моих нужд.
.htaccess
<IfModule mod_rewrite.c>
# enable rewrite engine
RewriteEngine On
# if requested url does not exist pass it as path info to index.php
RewriteRule ^$ index.php?/ [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?/$1 [QSA,L]
</IfModule>
index.php
foreach (explode ("/", $_SERVER['REQUEST_URI']) as $part)
{
// Figure out what you want to do with the URL parts.
}
Согласно этой статье , вам нужно правило mod_rewrite (помещенное в файл .htaccess
), которое выглядит примерно так:
RewriteEngine on
RewriteRule ^/news/([0-9]+)\.html /news.php?news_id=$1
И это сопоставляет запросы из
/news.php?news_id=63
с
/news/63.html
Другая возможность заключается в том, чтобы сделать это с forcetype
, который вынуждает что-нибудь по определенному пути использовать php для оценки содержимого. Итак, в вашем файле .htaccess
укажите следующее:
<Files news>
ForceType application/x-httpd-php
</Files>
И тогда index.php может выполнить действие на основе переменной $ _ SERVER ['PATH_INFO']
:
<?php
echo $_SERVER['PATH_INFO'];
// outputs '/63.html'
?>
На самом деле это не PHP, это apache, использующий mod_rewrite. Что происходит, если человек запрашивает ссылку, www.example.com/profile/12345, а затем Apache перебирает ее, используя правило перезаписи, чтобы она выглядела так: www.example.com/profile.php?u=12345, сервер. Вы можете найти больше здесь: Руководство по переписыванию
Есть много разных способов сделать это. Одним из способов является использование методов RewriteRule, упомянутых ранее, для маскировки значений строки запроса.
Один из способов, которые мне действительно нравятся, - использование шаблона front controller , вы также можете использовать URL-адреса, например http://yoursite.com/index.php/path/to/your/page/here и проанализируйте значение $ _SERVER ['REQUEST_URI'].
Вы можете легко извлечь / path / to / бит / page / here со следующим битом кода:
$route = substr($_SERVER['REQUEST_URI'], strlen($_SERVER['SCRIPT_NAME']));
Оттуда вы можете анализировать его по своему усмотрению, но ради Пита убедитесь, что вы его дезинфицируете;)
ModRewrite - не единственный ответ , Вы также можете использовать Options + MultiViews в .htaccess, а затем проверить $ _ SERVER REQUEST_URI
, чтобы найти все, что есть в URL.
Похоже, вы говорите о веб-сервисе RESTful.
http://en.wikipedia.org/wiki/Representational_State_Transfer
Файл .htaccess переписывает все URI, чтобы указать на один контроллер, но это более подробно, чем вы хотите получить в этот момент. Возможно, вы захотите взглянуть на Recess
Это RESTful-фреймворк, все на PHP