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

时间:2016-02-04 10:45:18

标签: php apache .htaccess

我想知道是否有办法更改相关文档根目录以获得额外的安全性。我将尝试通过以下示例解释自己:

/root
    /app
    /public

假设对Web服务器的www.example.com请求指向root文件夹 我想知道是否有配置,例如通过位于所述.htaccess文件夹中的root文件,这将使服务器指向public文件夹,因此具有任何远程路径始终相对于所述public文件夹 在这种情况下,www.example.com/app会在app内请求public文件夹,而不是app内的root文件夹,而后者无法访问远程网址请求 以同样的方式,www.example.com/public会在我们的根public文件夹中请求public文件夹,依此类推。

我已经阅读了this one之类的各种主题,提到使用自定义.htaccess配置来实现类似的功能,但它需要在所述文件中手动配置请求网址,而我的意图是无论您在何处托管应用程序,它都可以在没有进一步配置的情 我见过的另一个可能的解决方案是通过.htaccess文件进行硬重定向,实际上并没有解决任何问题。

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

4 个答案:

答案 0 :(得分:7)

您可以使用这个简单的04-Feb-2016 15:42:41.141 INFO [http-nio-8084-exec-78] com.opensymphony.xwork2.util.logging.commons.CommonsLogger.info Unable to find 'struts.multipart.saveDir' property setting. Defaulting to javax.servlet.context.tempdir 04-Feb-2016 15:42:41.203 WARNING [http-nio-8084-exec-78] com.opensymphony.xwork2.util.logging.commons.CommonsLogger.warn Request exceeded size limit!" org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (2104281) exceeds the configured maximum (2097152) 文件:

.htaccess

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

在公共文件夹中,您可以添加额外的<IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteCond %{REQUEST_URI} !^/public/ RewriteRule ^(.*)$ /public/$1 [L] </IfModule> 文件来处理您的网站规则。

答案 1 :(得分:3)

您还可以在一个网络服务器上托管多个网站。您可以使用

之前提到的mod_alias组合制作VirtualHosts和Alias

在此示例中,您可以使用自己的服务器(专用服务器或VPS)

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

它的一个示例Virtualhost是:

<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>

答案 2 :(得分:2)

我建议您无论如何都将服务器指向公共文件夹,因为它更安全,您可以看到所有框架的行为方式相同,它们都有一个&#34; public&#34;服务器指向的文件夹。

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

index.php

从此条目中,您将与您的申请进行沟通。

当然你仍然可以按照你的要求工作,它会很好用,但是谁知道你可能会错过一些东西,有人可以访问和查看你的内心&#34;文件。

答案 3 :(得分:1)

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