#php #laravel #routes #laravel-7 #boilerplate
#php #laravel #маршруты #laravel-7 #шаблон
Вопрос:
Маршрут входа
Route::get('/', [HomeController::class, 'index'])
->name('index')
->breadcrumbs(function (Trail $trail) {
$trail->push(__('Home'), route('frontend.index'));
});
Маршруты аутентификации
Route::get('login', [LoginController::class, 'showLoginForm'])->name('login');
Route::post('login', [LoginController::class, 'login']);
Проблема:
Мой проект работает нормально, когда я запускаю его локально, но когда я загружаю его на сервер, он показывает исключение «Метод не разрешен«. Я не знаю почему. Когда я запускал URL, например www.domain.com/billingsystem / он выдает указанную выше ошибку, но когда я запускаю URL, например www.domain.com/billingsystem/index.php или www.domain.com/billingsystem/public он отлично работает на сервере. На самом деле я не нахожу решения для этого, кто-нибудь, пожалуйста, помогите мне в этом.
Спасибо и с уважением.
Ответ №1:
Это связано с конфигурацией вашего веб-сервера. Laravel использует index.php
файл в качестве точки входа для всех своих запросов. Таким образом, вы должны указать, что все ваши вспомогательные маршруты должны проходить через этот файл. Конфигурация зависит от используемого вами веб-сервера. Я покажу вам, как вы можете это исправить, используя nginx
и apache2
.
nginx
Откройте файл конфигурации (обычно находится в /etc/nginx/sites-avialable/default
) и в location
разделе отредактируйте строку:
try_files $uri $uri/ =404;
Для
try_files $uri $uri/ $uri/index.php =404;
Сохраните файл и перезапустите nginx
с помощью sudo service nginx restart
.
apache2
Для apache2
вас нужен правильно настроенный .htaccess
файл в вашем /public
каталоге вашего проекта. По умолчанию Laravel поставляется с одним. Вам просто нужно указать apache2
, чтобы прочитать этот файл и соблюдать правила.
Сначала включите mod_rewrite
, выполнив:
sudo a2enmod rewrite
Затем перейдите в свой apache2
файл конфигурации, расположенный по адресу /etc/apache2/apache2.conf
и найдите раздел, в котором говорится <Directory /var/www/html>
(или путь к папке вашего проекта Laravel public
), и добавьте / отредактируйте строку ниже:
AllowOverride All
Перезапустите apache2
с помощью sudo service apache2 restart
.