Я пытался найти эту проблему, но не нашел что-то, что решает мою проблему - я почти уверен, что не набираю правильные поиски, так как я думаю, что это было проблемой и для других. Если я бью мертвую лошадь, пожалуйста, укажите мне правильное направление, спасибо.
Существующий код
Я создаю своего рода MVC фреймворк ,
.htaccess направляет все запросы в индекс . php.
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php [QSA,L]
<?php
require_once "./core/init.php";
Router::create( "./core/router/routes.php" )->direct( Request::uri(), Request::method() );
Мой router.class. php файл:
<?php
class Router {
protected $routes = array(
"GET" => array(),
"POST" => array()
);
public static function create( $routes ) {
$router = new static;
include $routes;
return $router;
}
public function get( $uri, $controller ) {
$this->routes[ "GET" ][ $uri ] = $controller;
}
public function post( $uri, $controller ) {
$this->routes[ "POST" ][ $uri ] = $controller;
}
public function direct( $uri, $method ) {
if ( array_key_exists( $uri, $this->routes[ $method ] ) ) {
include $this->routes[ $method ][ $uri ];
} else {
include $this->routes[ "GET" ][ "not-found" ];
}
}
}
Маршруты определены в маршрутах. php примерно так (только соответствующий маршрут показан):
$router->get( "post", "controllers/get/post.controller.php" );
Мой вопрос
В настоящее время при переходе к приведенному ниже сообщению отображается сообщение, и сообщение извлекается из базы данных с помощью слаг.
/post?p=my-post-name
Как я могу переписать свой маршрутизатор или .htaccess, чтобы тот же пост показывался по следующему URL?
/post/my-post-name