Задать вопрос
@leha78

Как делать правильный роутинг сайта, если сайт находится в другой директории?

Есть простенький роутинг

$routes = explode('/', $_SERVER['REQUEST_URI']);

При переходе по ссылке site/users/index, то в переменную $routes попадают:

array(3) { [0]=> string(0) "" [1]=> string(5) "users" [2]=> string(5) "index" }

users - это контроллер, index это метод (action).

Все бы хорошо, но если папку с сайтом положить в другую папку anouter-site/site/users/index

то $routes получается
array(4) { [0]=> string(0) "" [1]=> string(3) "site" [2]=> string(5) "users" [3]=> string(5) "index" }

и соответственно роутер падает, так как он думает что site это контроллер, а users это экшн.

Как сделать так, чтобы роутер при любом случае брал array(3) { [0]=> string(0) "" [1]=> string(5) "users" [2]=> string(5) "index" } игнорируя родительскую папку?
  • Вопрос задан
  • 200 просмотров
Подписаться 1 Оценить 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
Wolfnsex
@Wolfnsex Куратор тега PHP
Если не хочешь быть первым - не вставай в очередь!
на веб-сервере Apache файлы, в котором "сайт" лежит в "другой папке" выглядит так:

#Файл .htaccess лежащий в корне сервера
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteRule ^(.*)$ public/$1 [L]
</IfModule>


это переадресовывает все запросы в папку "паблик", взято из Laravel-5. Аналогичным способом можно сделать и для Nginx и скорее всего, для большинства других серверов.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Kostik_1993
Web Developer
Самый правильный вариант, это не использовать самописный роутинг. Второе это нужно понимать что не единым PHP сайт работает
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽