PHP: перенаправить URL на статические страницы / ресурсы - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь найти наилучший подход при ссылках на статические страницы, используя свободно следуемый шаблон проектирования MVC.

Я начинаю с того, что переписываю все запросы в index.php, который обрабатывает все запросы, и разбиваю их URL на контроллер, действие и параметры. Однако, если я не хочу следовать этой структуре URL-адресов и просто хочу посетить статическую страницу, такую ​​как 'http://example.com/home/', без необходимости вызывать какие-либо действия, как бы я достиг этого без получения ошибки php, вызванной моим маршрутизатором / Диспетчер пытается запросить файл, который не существует?

Я думал о настройке некоторого оператора switch или оператора if, как показано ниже, который проверяет, установлен ли URL-адрес для чего-то, затем использует пользовательский контроллер и действие, или я не был уверен, следует ли извлекать статические ресурсы из каталог MVC, и он должен быть отдельно и ссылаться на него таким образом?

<?php

class Router
{

    static public function parse($url, $request)
    {
        $url = trim($url);

        if ($url == "/")
        {
            $request->controller = "tasks";
            $request->action = "index";
            $request->params = [];
        }
        else
        {
            $explode_url = explode('/', $url);
            $explode_url = array_slice($explode_url, 2);
            $request->controller = $explode_url[0];
            $request->action = $explode_url[1];
            $request->params = array_slice($explode_url, 2);
        }

    }
}
?>

Это работает, но я бы предпочел не иметь огромной настройки маршрутизатора для множества различных статических ресурсов, так как он кажется липким и я просто исправляю код. Будет ли допустимым размещение статических страниц в своем собственном каталоге за пределами MVC и ссылки на них в представлениях? Я относительно новичок в MVC, поэтому любые рекомендации будут великолепны.

1 Ответ

0 голосов
/ 24 января 2019

Ваше приложение не должно получать запрос, который он не должен обрабатывать, вы можете решить это на уровне веб-сервера: например, если вы используете apache, вы можете настроить в файле .htaccess, что запрос должен быть направлен на ваш сервер.фронт-контроллер (например, index.php), только если запрошенный ресурс не существует

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /index.php [L]
...