Как установить условные блоки в Apache mod_rewrite - PullRequest
0 голосов
/ 24 марта 2019

Мне нужно установить 3 условных блока в Apache mod_rewrite: один для /api-docs, другой для /api и третий для всего остального.Но я не могу понять, что я делаю неправильно, потому что я не могу заставить это работать, как описано.

Пока что я установил файл .htaccess следующим образом:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_URI} api-docs
RewriteRule (.*) api-docs/$1 [C]

RewriteCond %{REQUEST_URI} api
RewriteRule ^api/(.*)$ server/api.php/$1 [L]

RewriteRule ^(.*)$ /index.html

Но я получаю ошибку:

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

Apache и версия системы:

 Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.2.7

Может кто-нибудь помочь мне найти ошибку, пожалуйста?

1 Ответ

1 голос
/ 26 марта 2019

Ну, я нашел решение после глубокого погружения в документацию Apache. Основной заставкой был флаг END (см. https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_end) вместе с другими изменениями, которые вы можете найти в конечном результате.

RewriteEngine On

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]

RewriteCond %{REQUEST_URI} "api\/.*"
RewriteRule ^api\/(.*)$ server/api.php/$1 [END]

RewriteCond %{REQUEST_URI} !=api\/.*
RewriteRule ^ /index.html [L]

Надеюсь, это поможет людям, которые работают с Angular 2+ и хотят использовать один и тот же сервер Apache для бэкэнда и SPA одновременно.

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