Я впервые загрузил свой сайт на хостинг 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 осталась прежней и находится в главном каталоге проекта, за исключением общих файлов, которых больше нет в общей папке, они находятся непосредственно в главном каталоге.
У кого-нибудь есть идея для решения?
Спасибо!
Установите маршрут так, чтобы ваш файл 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);
}
}
Это первое, что пришло мне в голову: вы не перенаправляете все запросы на 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 может быть другой. Прочитайте руководства и настройте их правильно.