Подкаталог в проекте laravel на сервере - PullRequest
1 голос
/ 29 октября 2019

Я создал проект laravel и загрузил на сервер как https://www.mydemosite.org/healthcard

И я загрузил все файлы в подкаталог «Healthcard». Теперь я сделал изменения в общей папке.

  1. переместить все файлы из общей папки в папку «healthcard».

  2. Измените индексный файл, как это требуется

    DIR / начальной загрузки / autoload.php '. $ app = require_once DIR . '/ bootstrap / app.php';

, после этого я добавил файл .htaccess в корневой каталог

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

И в общей папке вот так

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On    
    RewriteBase /healthcard/

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

Я изменил файл .env также как

APP_URL=https://www.mydemosite.org/healthcard

, но все равно он не работает. Должен ли я сделать какие-либо другие изменения. Пожалуйста, дайте мне знать. Заранее спасибо за помощь.

Ответы [ 2 ]

1 голос
/ 29 октября 2019

Для аналогичного проекта у меня есть это в качестве корневого .htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^public
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

И это в общей папке:

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

    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}]
</IfModule>

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

Кроме того: попробуйте вернуть ваш index.php обратно к тому, чем он был изначально, и поместите его обратно в общую папку (вФактически поместите все файлы, которые вы переместили из общей папки, обратно в.)

0 голосов
/ 29 октября 2019

Выполните следующие действия в следующем порядке:

  1. Извлеките все ваши файлы в папку с именем local, расположенную в public_html

  2. Переместить файлы в папке public в public_html рядом с папкой local.

  3. Открыть файл index.php

изменить эту строку:

require __DIR__.'/../vendor/autoload.php';

на это:

require __DIR__.'/local/vendor/autoload.php';

и то же самое для этого:

$app = require_once __DIR__.'/../bootstrap/app.php';

изменить на это:

$app = require_once __DIR__.'/local/bootstrap/app.php';
Откройте файл .env и настройте информацию вашей базы данных
DB_DATABASE=YOUR_DB_NAME
DB_USERNAME=YOUR_DB_USERNAME
DB_PASSWORD=YOUR_DB_PASS
Обязательно проверьте приведенный ниже файл, так как он иногда изменяется при извлечении его содержимого. Поэтому замените его содержимое на эти коды
    <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>
Проверьте версию php, установленную на вашем сервере или общем хостинге, которая должна соответствовать требуемой версии laravel.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...