Сбой маршрутизации в приложении Laravel, развернутом в подпапке

Сбой маршрутизации в приложении Laravel, развернутом в подпапке

18.12.2019 08:00:57 Просмотров 31 Источник

Хорошо, вот что происходит.

Я создал небольшое приложение laravel (на самом деле, оно все еще находится на стадии разработки).

Когда я загружаю его на сервер (общий хостинг, управляемый через cPanel), я развернул его в подпапку внутри основного веб-сайта.

В папке public_html сервера находится основной сайт (WordPress), поэтому я создал подпапку, в которую поместил свое приложение.

Теперь, когда вы просите http://oursite.com вы попадаете на сайт Wordpress. И когда вы просите http://oursite.com/laravelapp вы достигнете начальной страницы приложения laravel.

Однако, когда я пытаюсь просмотреть любую страницу в приложении, маршрут возвращает меня к маршрутам внутри корневой веб-папки.

Например, если я нажму кнопку входа в систему, то петиция к http://oursite.com/laravelapp/login перенаправляет на http://oursite.com/login , и очевидно, что загрузка страницы завершается неудачей

Самое смешное, что если я доберусь до непосредственно общедоступных страниц, это, кажется, работает нормально.

Если я прямо попрошу http://oursite.com/laravelapp/public/index.php и нажимаем ту же кнопку входа в систему, запрос на http://oursite.com/laravelapp/public/index.php/login сделано, и это работает!! Даже ссылки JS и CSS правильно обнаруживаются по этому запросу!!

Я подозреваю, что это, вероятно, что-то очень глупое, что я не могу видеть сейчас, потому что я слишком устал, но я действительно буду благодарен за любую проницательность в этом вопросе.

Индекс.php в моей папке laravelapp выглядит следующим образом:

    <?php

  /**
   * Laravel - A PHP Framework For Web Artisans
   *
   * @package  Laravel
   * @author   Taylor Otwell <taylor@laravel.com>
   */

$uri = urldecode(
    parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)
);

// This file allows us to emulate Apache's "mod_rewrite" functionality from the
// built-in PHP web server. This provides a convenient way to test a Laravel
// application without having installed a "real" web server software here.
if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
    return false;
}

require_once __DIR__.'/public/index.php';

А это и есть кодекс чести .htaccess файл внутри /laravelapp / общая папка:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

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

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

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

Может быть, я смогу исправить это с помощью поддомена, например myLaravelApp.oursite.com-что?

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/59396881/routing-fail-on-laravel-app-deployed-on-subfolder#comment104983324_59396881
@Shobi я приложил его к вопросу. Вы видите там что-то, что может сделать этот трюк?
https://stackoverflow.com/questions/59396881/routing-fail-on-laravel-app-deployed-on-subfolder#comment105000812_59396881
Вы установили URL вашего сайта в конфигурационных файлах?
https://stackoverflow.com/questions/59396881/routing-fail-on-laravel-app-deployed-on-subfolder#comment105055568_59396881
@GBWDev APP_URL на моем .файл env указывает на oursite.com/laravelapp если это то, о чем вы просите

Ответы - Сбой маршрутизации в приложении Laravel, развернутом в подпапке / Routing fail on Laravel app deployed on subfolder

Является ответом!
Bardo

24.12.2019 07:06:55

Хорошо.

Я исправил эту проблему копированием .htaccess на laravelApp/public to laravelApp.

Казалось, что корневая папка нуждается в каком-то перенаправлении, и это сработало как заклинание.

Закрыть X