как настроить Laravel 6 в подпапке домена? - PullRequest
1 голос
/ 13 июля 2020

У меня есть приложение Laravel 6, которое отлично работает локально на redhat apache.

мой клиент устанавливает домен и должен использовать / PFI для домена, т.е. domain.или / PFI

я помещаю свою root папку в / var / www/pfi/

в config / app. php У меня есть

'url' => 'htt ps: // domain.or / PFI ',

В pfi / public / .htaccess у меня

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

    RewriteEngine On  
    RewriteBase /PFI

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

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

Я могу получить доступ к domain.или / PFI, и страница загружается (без стилей, изображений и т. Д.). Но все остальные ссылки на страницы, изображения, css, js, ... неверны. Например, они ссылаются на

domain.or / css / style. css

вместо ссылки на

domain.or / PFI / css / style. css

т.е. "PFI" отсутствует во всех ссылках.

Если I go на

domain.или / PFI / login

У меня ошибка 403, но если domain.or / login, страница загружается без css, js

и если я открываю css, js файл вручную, копируя ссылку на новый tab т.е. domain.or / PFI / css / style. css css не загружается, отображается только главная страница вместо css скриптов

Ответы [ 2 ]

0 голосов
/ 14 июля 2020

Я получил ответ

Сделанные мной изменения: (моя папка приложений laravel)

  1. создать папку на / var / www / так же, как и домен подпапки ur, sudo mkdir PFI
  2. Создать softlink: ln -s / var / www/laravel/public / var / www/PFI
  3. Обновить httpd.conf

<VirtualHost *:80>
    ServerName xxxx
    DocumentRoot /var/www/PFI
    Redirect permanent / https://xxx/PFI

<Directory /var/www/laravel/public>
        AllowOverride All
    </Directory>
</VirtualHost>

<VirtualHost _default_:443>
ServerName XXX
DocumentRoot /var/www/PFI
</VirtualHost>
обновить мои макеты с помощью и все мои css, js изменить на
0 голосов
/ 13 июля 2020

для решения этой проблемы:

  1. убедитесь, что внутри файла .env APP_URL=https://domain.or/PFI
  2. то же самое для config/app.php файла 'url' => env('APP_URL', 'https://domain.or/PFI'),
  3. отредактируйте свой public/index.php, вы должны изменить путь к ним на строку, чтобы он соответствовал фактическому пути
    $app = require_once __DIR__.'/../path_to_public_folder/bootstrap/app.php';
    
    require __DIR__.'/../path_to_public_folder/vendor/autoload.php';

в .htaccess
    <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]
    
    # Redirect http to https 
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

    <IfModule mod_headers.c>
        # Prevent click jacking
        Header set X-Frame-Options Deny
        Header set X-Frame-Options: SAMEORIGIN
    </IfModule>

</IfModule>
...