С пакетом nikic / fast-route PHP для URL-маршрутизации:
PHP-маршрутизация URL не работает, пока я не укажу весь путь для маршрута, а не просто название маршрута:
Например, чтобы создать маршрут для /hello-world
Я должен указать весь путь: localhost/myProject/public/index.php/hello-world
$r->addRoute('GET', '/localhost/myProject/public/index.php/hello-world', function () {
echo 'Hello World';
});
Есть ли что-то, что нужно сделать в файле .htaccess?
Особенности текущего проекта:
Я не использую фреймворк, но урок Патрика Луиса по No Framework на GitHub: https://github.com/PatrickLouys/no-framework-tutorial
Я использую XAMPP на Fedora Linux в качестве веб-сервера
мой код находится в моем / home каталоге, а веб-сервер находится в / opt / lampp … я связал их символической ссылкой: sudo ln -s /home/... /opt/lampp/htdocs
(если это имеет значение) … Я знаю, что учебник опирается на встроенный сервер PHP (php -S localhost:8000
)
Может быть, это неправильно, но вместо /helloworld
ты должен написать ./helloworld
Вы должны поместить свой код (файлы) в папку htdocs по следующему пути:
/opt/lampp/htdocs/
Затем создайте папку с именем hello-world, эта папка должна находиться внутри папки htdocs следующим образом:
/opt/lampp/htdocs/hello-world
Затем откройте терминал и получите доступ как пользователь root, измените каталог на hello-world, а затем вы должны дать разрешение на папку следующим образом:
chmod 667 hello-world -R
-R используется для разрешения доступа к папке hello-world и всему файлу внутри нее. И это все! Теперь, когда вы попробуете localhost / hello-world, вы увидите, что ваш проект теперь работает!
Примечание. Если это не помогло, попробуйте создать php-файл с именем test.php в папке htdocs по пути / opt / lampp / htdocs /. Этот файл должен иметь это внутри:
<h1><b><?php echo "hello wordl!"; ?></b></h1>
Снова вы должны дать файлу разрешение (chmod 667). Затем скопируйте это и вставьте в панель навигации вашего браузера:
localhost/test.php
Вы должны увидеть в своем браузере большой привет мир в смелом стиле.
Мое быстрое решение:
1- Создать .htaccess
файл в публичном каталоге. Все запросы будут направлены на index.php
2. Добавьте функцию для анализа всего URL-адреса, переданного для получения правильного URI. В основном функция обрезает весь URL как localhost/public/index.php/hello-world
и возвращается /hello-world
, /hello-world
будучи маршрутом, зарегистрированным нашим маршрутизатором быстрого маршрута, соответствующий контроллер будет вызываться при получении такого URL-адреса нашим веб-сервером.
Источник (пояснения и пример кода): http://blogs.shephertz.com/2014/05/21/how-to-implement-url-routing-in-php/