Получение ошибки «Метод GET не поддерживается для этого маршрута. Поддерживаемые методы: HEAD’

#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 .