Задать вопрос
@Ludafr
développeur web junior PHP JS HTML CSS

Сайт работает на тестовом сервере localhost:8000. Как правильно создать .htaccess для запуска на удаленном сервере?

При запуске сайта используeтся функция run()
public function run ():self
{
$match = $this->router->match();
$view= $match['target'] ;
$params= $match['params'];
$router= $this;
$isAdmin= strpos($view, 'admin/') !== false;
$isUser =strpos($view, 'user/') !== false;
if(!$isAdmin && !$isUser){
$layout = 'layouts/default';
}
if($isUser){
$layout = 'user/layouts/default';
}
if ($isAdmin) {
$layout = 'admin/layouts/default';
}
try{
ob_start();
require $this->viewPath . DIRECTORY_SEPARATOR . $view . '.php';
$content = ob_get_clean();
require $this->viewPath . DIRECTORY_SEPARATOR . $layout . '.php';
} catch (ForbiddenException $e) {
header('Location: ' . $this->url('login') . '?forbidden=1');
die();
}
return $this;

}
На локальном сервере localhost:8000 $view возвращает ожидаемое значение post/index и все работает

На merlu.akoatic.ovh/~myla/public ошибка App\Router::run(): Failed opening required '/home/myla/www/views/.php' (include_path='.:/usr/share/php') $view возвращает false и сайт не запускается

На XAMPP localhost/php/public/public ошибка по сути та же Trying to access array offset on value of type bool $view возвращает false и сайт не запускается

В файле index.php для запуска используется
$router = new App\Router(dirname(__DIR__) . '/views');
$router
->get('/', 'post/index', 'home')
->get('/blog/category/[*:slug]-[i:id]', 'category/show', 'category')
->get('/blog/[*:slug]-[i:id]', 'post/show', 'post')
->match('/login','auth/login','login')
->match('/register','auth/register','register')
->post('/logout','auth/logout','logout')
->run();

Файл index.php лежит в папке public , есть папки src , views и vendor, и все это расположено в корневой папке проекта тоже с названием public.
Правильно ли я понимаю , что для запуска проекта на удаленном сервере нужен .htaccess? Я пробовала создать его в следующей конфигурации, но пока ничего не получается.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule / index.php [L]

Это мой первый опыт в создании сайта, поэтому не судите строго. Заранее благодарна за помощь.
Вот полная версия кода https://gitlab.com/Liudmylla/annonces_russes
  • Вопрос задан
  • 432 просмотра
Подписаться 1 Простой 7 комментариев
Пригласить эксперта
Ответы на вопрос 1
@Ludafr Автор вопроса
développeur web junior PHP JS HTML CSS
Отвечаю сама себе, вот такая конфигурация работает , .htaccess положила в корневую папку
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
RewriteRule ^ %1 [L,NE,R=302]
RewriteRule ^((?!public/).*)$ public/$1 [L,NC]
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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