【问题标题】:.htaccess, use mod_rewrite to rewrite to a file OUTSIDE the web root.htaccess,使用 mod_rewrite 重写到 web 根目录之外的文件
【发布时间】:2016-11-25 17:40:56
【问题描述】:

这是我的目录结构的表示:

/var/www
  /html/site
    .htaccess
  /secret
    file.php

我想使用.htaccess 文件将向http://example.com/files/1234 发出的url 请求重写为位于webroot 之外的代码file.php。这是出于安全原因,与我合作的其他开发人员坚持认为此代码位于 Web 可访问目录之外。到目前为止,我的.htaccess 文件如下所示:

RewriteEngine On
RewriteRule ^files/(.*)$ ../../secret/file.php?file_name=$1 [NC,L]

但是当我尝试执行此操作时,我收到了 400 错误请求。有可能吗?

【问题讨论】:

    标签: php apache .htaccess mod-rewrite url-rewriting


    【解决方案1】:

    您无法使用 .htaccess 访问位于文档根目录之外的文件。

    但是你可以通过在你的 apache 配置文件中添加一个别名来做到这一点,就像这样:

    Alias /secret/ /home/site_name/web/yoursite.com/secret/
    

    【讨论】:

      【解决方案2】:

      简短的回答:不。网络服务器不能直接访问文档根目录之外的文件。如果你考虑一下,如果可以的话,那将是一个相当大的安全问题。您可以做的是重写文档根目录中的文件,该文件包含或读取位于根目录之外的文件。 (从 cmets 转移...)

      【讨论】:

      • 如果这几天没有更好的答案,我会接受这个。
      • 你几天多少钱??
      • 也许他的意思是几年;)
      • 哇,这个好像离我而去了!对不起,花了这么长时间,但你去:)
      猜你喜欢
      • 1970-01-01
      • 2012-06-26
      • 1970-01-01
      • 2016-09-07
      • 1970-01-01
      • 2014-05-12
      • 2012-01-26
      • 2015-11-11
      • 2018-08-09
      相关资源
      最近更新 更多