2014-01-24 2 views
4

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

Так что мой VirtualHost является 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] 

Но я получаю:

Bad Request

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

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

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

+0

Почему вы не можете перемещать 'api' под'/var/www/thesite/web'? – anubhava

+0

@anubhava, потому что 'web' доступен публично. вы не хотите, чтобы ваш исходный код был доступен. – maxwell2022

ответ

3

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

Что-то вы можете попробовать сделать это только с помощью PHP, чтобы включить/index.php требуют АНИ в:

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

И в index_api.php вы можете включить или требовать»../api/web/index. php ".

+0

Хорошо, что это запрещено! – Phuong

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