@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" } игнорируя родительскую папку?
  • Вопрос задан
  • 196 просмотров
Решения вопроса 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 сайт работает
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы