apache - htaccess 重定向 URI 到父目录

标签 apache .htaccess symfony mod-rewrite web-hosting

我有一个网站托管在 /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/

相关文章:

php - 即使定义了服务,Symfony 事件订阅者也无法工作

Apache 2 VHost - www.domain.com 有效,但 domain.com 转到注册商

php - Subversion 如何处理文件权限和 .htaccess 文件?

.htaccess - 强制www。和 SSL,无需选择端口

mysql - Doctrine2 返回 1 个元素的数组而不是 null

forms - 如何在 Twig 模板中隐藏表单字段?

apache - 如何在 Apache 虚拟主机中使用来自 CloudFront 的自定义 header

php - 在 Windows 端口 3307 上运行 MySQL

regex - 排除 URL 的重定向匹配不起作用

php - 使 .htaccess 使用前端 Controller 重写对/web 的所有请求?