htaccess перенаправляет URI в родительский каталог


У меня есть веб-сайт, размещенный в /var/www/thesite (сервер apache), это веб-сайт Symfony2, поэтому внутри этой папки у меня есть папка web, на которую указывает мой виртуальный хост.

Итак, мой виртуальный хост www.mysite.com -> /var/www/thesite/web

В этой веб-папке у меня есть .htaccess, чтобы красиво отформатировать URL.

Теперь я добавил API в /var/www/thesite/api, API реализован с помощью Silex. Я хочу перенаправить все запросы http://www.mysite.com/api на этот новый фреймворк.

Поэтому я добавил в /var/www/thesite/web/.htaccess

RewriteCond %{REQUEST_URI} ^/api
RewriteRule ^api(.*)$ ../api/web/index.php [NC,QSA,L]

Но я получаю:

Плохой Запрос

Ваш браузер отправил запрос, который этот сервер не смог понять.

Я не уверен, что могу получить доступ к родительской папке в .htaccess. Я не хочу изменять свой каталог virtualhost target, чтобы избежать нарушения безопасности.

Как я могу решить эту проблему?

1 4

1 ответ:

Вы не можете направить запрос ввне корневого документа сайта, который является /var/www/thesite/web. Таким образом, вы не можете получить доступ к /var/www/thesite/ или /var/www/thesite/api из каталога /var/www/thesite/web. Неверный запрос 400 вызван битом ../api/ цели вашего правила.

То, что вы можете попробовать сделать, - это просто использовать php для включения/требования индекса api.php:

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

И в index_api.php Вы можете включить или потребовать "../ api / web / index.PHP-файл.