我有一个文件结构如下:
- 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'); ?>