PHP сайт работает правильно на локальном хосте: 8000, но выдает ошибки на XAMPP или другом сервере. Как создать .htaccess? - PullRequest
0 голосов
/ 18 апреля 2020

Это мой первый опыт создания сайта в PHP. Мой проект работает правильно на сервере php interne, но не на Xampp ni на сервере ovh

ovh serveur erreur: App \ Router :: run (): Требуется сбой при открытии '/ home / myla / www/views/.php '(include_path ='.: / Usr / share / php ': var $ view false

localhost: 8000 работать правильно: var $ view post / index

XAMPP erreur : Попытка получить доступ к смещению массива по значению типа bool: var $ view false

Проблема заключается в представлении var $ в функции 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;

}

Я использую run ( ) в индексе. 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();

Я пытаюсь создать .htaccess, чтобы переписать правило, но я не нашел хорошую конфигурацию. Индекс файла. php находится в папке publi c и папки publi c, sr c, просмотры находятся в racine проекта.

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ /public/index.php [L]

Не работает.

Можете ли вы помочь мне настроить .htaccess Спасибо заранее.

1 Ответ

0 голосов
/ 20 апреля 2020

Вот хорошая конфигурация:

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
RewriteRule ^ %1 [L,NE,R=302]
RewriteRule ^((?!public/).*)$ public/$1 [L,NC]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...