2014-01-24 73 views
4

我有一个网站托管在/var/www/thesite(apache服务器),这是一个Symfony2网站,所以在这个文件夹我有一个web文件夹,我的虚拟主机指向。htaccess重定向URI到父目录

所以我的虚拟主机是www.mysite.com -> /var/www/thesite/web

在此网络文件夹我有一个.htaccess很好地格式化URL。

现在,我在/var/www/thesite/api中添加了一个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中的父文件夹。我不想更改我的虚拟主机目标目录以避免安全漏洞。

我该如何解决这个问题?

+0

为什么不能在'/ var/www/thesite/web'下移动'api'? – anubhava

+0

@anubhava,因为web可以公开访问。你不希望你的源代码可访问。 – maxwell2022

回答

3

您无法将请求路由到以外的网站的文档根目录,即/var/www/thesite/web。因此您不能从/var/www/thesite/web目录内访问/var/www/thesite//var/www/thesite/api。 400错误请求是由于您的规则目标的../api/位。

有些事情,你可以尝试做只是使用PHP包括/需要API的index.php文件:

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

而且在index_api.php您可以包括或要求” ../api/web/index。 php“文件。

+0

这是不好的,这是不允许的! – Phuong