如何在Web服务器行为中更改文档根目录?

我想知道是否有一种方法来更改相对的文档根为额外的安全性。 我将尝试通过以下示例来解释自己:

/root /app /public 

假设www.example.com请求到Web服务器将指向root文件夹。
我想知道是否有configuration,例如通过位于所述root文件夹中的.htaccess文件,这将使服务器指向公用文件夹,因此有任何远程path总是相对于所述公用文件夹。
在这种情况下, www.example.com/app app会在public内部请求一个app文件夹,而不是root目录内的app文件夹,而使得后者无法从远程URL请求中访问。
以同样的方式, www.example.com/public public将在我们的根公用文件夹内请求一个public文件夹,等等。

我已经阅读了像这样的一个提到使用自定义.htaccessconfiguration来实现类似的各种主题,但它需要在所述文件中手动configuration请求url,而我的意图是它没有进一步的configuration工作,无论在哪里你主持的应用程序。 我见过的另一个可能的解决scheme是通过.htaccess文件做一个硬redirect,它并不能解决任何问题。

随意编辑这篇文章,因为我可能很难试图解决我的问题。

我建议你把服务器指向公用文件夹,因为它更安全,你可以看到所有的框架的行为都是一样的,它们都有一个服务器指向的“公共”文件夹。

在公共文件夹中,您有一个入口点,例如

 index.php 

从这个条目你将与你的应用程序进行通信。

当然,你仍然可以按你要求的方式工作,而且这样做会很好,但是谁知道你会错过某些东西,并且有人可以访问和查看你的“内部”文件。

你可以使用这个简单的.htaccess文件:

 <Ifmodulee mod_rewrite.c> RewriteEngine on RewriteBase / RewriteCond %{REQUEST_URI} !^/public/ RewriteRule ^(.*)$ /public/$1 [L] </Ifmodulee> 

您的服务器上的任何请求将指向公用文件夹。

在公用文件夹内,您可以添加额外的.htaccess文件来处理您的网站规则。

您也可以在一台网络服务器上托管多个网站。 你可以结合使用前面提到的mod_alias制作VirtualHosts和Alias

在这个例子中是有自己的服务器(专用或VPS)

通过使用虚拟主机,您可以告知网络服务器何时收到www.example.com的请求以提供来自特定文件夹的内容。

一个虚拟主机的例子是:

 <Virtualhost *:80> serverName ^domain_or_ip^ DocumentRoot ^path of the public folder^ DirectoryIndex index.php home.php index.html index.htm ErrorLog ^path for a file containing php errors^ CustomLog ^path for logging whitch browser and ip visited your site^ combined </Virtualhost> 

你在Apache网络服务器上? 如果我理解正确,你正在寻找虚拟目录。 通常,我们必须将我们的Web应用程序放在Apache的文档根目录中,以使应用程序可以从网络访问。 然而,即使我们把它放在Apache的文档根目录之外,仍然有一个技巧可以让Web应用程序仍然可以访问。 请阅读这里:显然, http ://w3shaman.com/article/creating-virtual-directory-apache信用W3Shaman.com。