ApacheredirectDocumentRoot之外

我有一个文件结构如下:

- Site - includes - page.php - pages - example.php - public - .htaccess 

.htaccess使用rewrite_module来解决大多数对page.php的请求。

 RewriteRule ^ "../includes/page.php" [L] 

page.phpparsing原始请求,并在页面目录中包含正确的“页面”。

我想最初的请求解决/网站/公共,所以我有以下的Apacheconfiguration:

 <VirtualHost *:80> ServerName example.com DocumentRoot /Site/public </VirtualHost> 

这会产生400个错误的请求错误,因为我试图redirect到DocumentRoot之外的文件。

我最终不希望用户能够直接访问公共之外的文件。

有没有一个很好的方法来指定,在执行方面,/网站是根,但在服务/网站/公众是根?

这很常见。

而不是使用.htaccess作为路由器,你应该使用PHP。

编辑:您不能使用.htaccess路由在docroot以外的网页。

将大部分文件保留在docroot之外,但保留处理路由的index.php。 PHP能够包含/需要docroot以外的文件,这在很less的PHP框架中被广泛使用。

 - Site - includes - page.php - pages - example.php - public - .htaccess - index.php ( <?php require_once('../includes/page.php'); ?>