Не удается настроить Laravel API в подкаталоге через .htaccess - PullRequest
2 голосов
/ 01 апреля 2019

У меня есть следующий фиктивный локальный веб-сайт (настроенный через два разных виртуальных хоста):

[vhost 1] https://www.test -laravel.com

DocumentRoot "${INSTALL_DIR}/www/[WEBSITE-DIR]"

[vhost 2] https://www.test -laravel-direct.com

DocumentRoot "${INSTALL_DIR}/www/[WEBSITE-DIR]/laravel/public"

Вы можете проверить это здесь через GitHub:

https://github.com/napolev/test-laravel.com

Внутри его каталога я сбросил 4 файла:

index.php
page_01.php
page_02.php
page_03.php

с тем же содержимым (просто для обозначения текущего файла):

<?
echo 'You are on: '.$_SERVER['PHP_SELF'];
?>

Также внутри его каталога я установил Laravel с:

$ laravel new api

В файле: laravel\routes\api.php Я настроил следующий маршрут:

Route::post('/echo-post', function (Request $request) {
    return request()->all();
});

Если я использую [vhost 2] с Postman, используя следующий POST запрос URL:
(в этом случае домен указывает на подкаталог: /laravel/public вместо корневого каталога)

https://www.test-laravel-direct.com/api/echo-post?param1=value1&param2=value2&param3=value3

Я получаю ожидаемый ответ:

{
    "param1": "value1",
    "param2": "value2",
    "param3": "value3"
}

Затем я хочу использовать [vhost 1] с Postman, используя следующий POST запрос URL:
(в этом случае домен указывает на корневой каталог, а не на подкаталог: /laravel/public)

https://www.test-laravel.com/api/echo-post?param1=value1&param2=value2&param3=value3

Для этого я настроил корневой .htaccess файл как:

RewriteEngine On
RewriteBase /laravel/

RewriteRule ^api/(.*)$ /api/$1 [L]

Но при выполнении запроса с Postman я получаю следующий вывод:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
    <head>
        <title>500 Internal Server Error</title>
    </head>
    <body>
        <h1>Internal Server Error</h1>
        <p>The server encountered an internal error or
misconfiguration and was unable to complete
your request.</p>
        <p>Please contact the server administrator at 
 admin@example.com to inform them of the time this error occurred,
 and the actions you performed just before this error.</p>
        <p>More information about this error may be available
in the server error log.</p>
    </body>
</html>

В журнале ошибок Apache я получаю следующее:

AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

Есть ли у вас какие-либо идеи о том, как я могу использовать [vhost 1] со следующим POST запросом URL?

https://www.test -laravel.com / апи / эхо-сообщение? Param1 = value1 & param2 = значение2 & param3 = value3

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...