laravel — загрузил сайт PHP в сеть, работает только страница указателя

Я впервые загрузил свой сайт на хостинг ipage.
Папки public_html не было, и корневой каталог на самом деле является общедоступным, поэтому я загрузил в него все папки своего веб-сайта и дал открытые разрешения на просмотр только моим публичным файлам.
Теперь моя домашняя страница работает, а остальная часть — нет, и я думаю, что это как-то связано с расположением файлов, которое теперь отличается от того, когда оно было локальным, из-за структуры каталогов ipage. Я получаю ошибку «Страница не найдена».

Это пример из моего файла route.php:

Route::get('/', 'PagesController@index');
Route::get('store', 'StoreController@index');

(домашняя страница работает, магазин не работает).

Пример контроллеров:

class PagesController extends MainController
{
public function index()
{
self::$data['title'] = 'Ayala & Tamar | Home Page';
return view('content.home', self::$data);
}class StoreController extends MainController
{
//Getting dynamic categories
public function index()
{
self::$data['title'] = 'Ayala & Tamar | Store';
self::$data['categories'] = Category::all()->toArray();
return view('content.categories', self::$data);
}

Вся моя структура Laravel и PHP осталась прежней и находится в главном каталоге проекта, за исключением общих файлов, которых больше нет в общей папке, они находятся непосредственно в главном каталоге.

У кого-нибудь есть идея для решения?
Спасибо!

1

Решение

Установите маршрут так, чтобы ваш файл route.php выглядел следующим образом

Route::controllers([
'store' => 'StoreController'
]);

Route::get('/', 'HomeController@index');

Ваш контроллер

class StoreController extends Controller
{
public function getIndex(Request $request)
{
self::$data['title'] = 'Ayala & Tamar | Store';
self::$data['categories'] = Category::all()->toArray();
return view('content.categories', self::$data);
}
}
3

Другие решения

Это первое, что пришло мне в голову: вы не перенаправляете все запросы на index.php

Проверьте .Htaccess файл и mod_rewrite расширение, если вы используете апаш, если вы используете nginx, проверьте конфигурацию сайта. Он должен правильно перенаправлять весь запрос на index.php, иначе ваш запрос не будет работать, кроме index.

.htaccess файл из свежего laravel 5.3

RewriteEngine On

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

для nginx вы должны сделать что-то подобное в конфигурационном файле вашего сайта:

try_files $uri $uri/ /index.php?$query_string;

location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

Конечно, конфигурация nginx может быть другой. Прочитайте руководства и настройте их правильно.

0

По вопросам рекламы [email protected]