我有一个网站托管在 /var/www/thesite
(apache 服务器),它是一个 Symfony2
网站所以在这个文件夹里面我有一个 web
我的虚拟主机指向的文件夹。
所以我的虚拟主机是 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]
但我得到:
Bad Request
Your browser sent a request that this server could not understand.
我不确定是否可以访问
.htaccess
中的父文件夹.我不想更改我的虚拟主机目标目录以避免安全漏洞。我该如何解决这个问题?
最佳答案
您不能将请求路由到站点的文档根目录之外,即 /var/www/thesite/web
.所以你不能访问/var/www/thesite/
或 /var/www/thesite/api
从内部 /var/www/thesite/web
目录。 400 Bad 请求是因为 ../api/
你的规则目标的一部分。
您可以尝试做的只是使用 php 来包含/要求 api 的 index.php:
RewriteRule ^api/(.*)$ /index_api.php [L]
而在
index_api.php
您可以包含或要求“../api/web/index.php”文件。
关于apache - htaccess 重定向 URI 到父目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21324491/