Apache RewriteRule для запрета всех URL, кроме одного - PullRequest
0 голосов
/ 06 мая 2018

У меня проблема с поиском подходящих RewriteRules для моей проблемы.

Я хочу настроить набор правил в конфигурации Apache vhost.

Моя цель состоит в том, чтобы все URL-адреса заканчивались на 403 Запрещенных. Только вызов / api должен идти в index.php, который является точкой входа для моего проекта Symfony.

Сейчас у меня есть следующее, но оно не работает правильно:

        RewriteEngine On
        RewriteCond %{REQUEST_URI} !^/api$
        RewriteRule (.*) - [F]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php [QSA,L]

С этими правилами все вызовы заканчиваются на 403.

Обратно это работает:

        RewriteCond %{REQUEST_URI} !^/api$

Таким образом, все URl поступают в мой проект Symfony. За исключением / api, который заканчивается на 403. Но я не хочу этого так. Как уже упоминалось, я хочу наоборот.

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 09 мая 2018

Ты рядом. Используйте необработанный запрос, чтобы убедиться, что люди не могут посетить index.php.

RewriteCond %{THE_REQUEST} ^\S+\s+/api/?(?:\?\S*)?\s
RewriteRule ^ index.php [END]
RewriteRule ^ - [F]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...