2016-11-16 4 views
0

Я пытаюсь ограничить доступ к моему приложению Laravel 5.3 с помощью Apache.Laravel .htaccess rewrite и apache2 Директива местоположения

Мое приложение доступно снаружи, но получает сообщения от различных внешних источников. Существует перенаправление портов, настроенное с отключенным NAT, поэтому я могу указать внутреннее из внешних запросов.

Все URL должны показывать 403, за исключением случаев, когда example.com/api/external/ ... является URL-адресом. У меня есть следующий HTAccess (по умолчанию для Laravel 5.3)

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

мой виртуальный хост конфигурации

<Directory /var/www/mailer/public/> 
      Options Indexes FollowSymLinks 
      AllowOverride All 
      Require all granted 
    </Directory> 

    <Location /> 
      Order deny,allow 
      deny from all 
      allow from 10.64.1.0/24 
      allow from 10.64.20.0/24 
    </Location> 

    <Location /api/external/smsPost> 
      Allow from all 
    </Location> 

Всякий раз, когда я получить доступ к любому URL с внешнего адреса я все еще получаю 403 даже на разрешенное место нахождения.

You don't have permission to access /index.php on this server. 

Я думаю, потому что он имеет /index.php даже на example.com/api/external/smsPost, что это проблема с Htaccess и директивы местоположения не работает для этой цели. Есть ли способ добиться того, что мне нужно с этой директивой?

Большое спасибо.

ответ

0

Почему вы не используете промежуточное ПО laravel и не связываете его с вашими ограниченными маршрутами?

public function handle($request, Closure $next) 
{ 

    if(Route::getCurrentRoute()->getPath() == "api/external/") 
      return response('You don't have permission to access /index.php on this server.', 403); 

    // return the $next closure, so other Middlewares can run 
    return $next($request); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^