【问题标题】:PHP to .htaccess protected htmlPHP 到 .htaccess 受保护的 html
【发布时间】:2011-05-13 05:00:18
【问题描述】:

我需要找到一种方法来使用 PHP 来启用对受 .htaccess 保护的 .html 文件的访问。当前设置依赖于 mod_auth_ldap,允许用户查看 .html 文件。

我想创建的设置有一个用户登录的 php 脚本,然后允许他们访问 .html 文件,同时保留当前的安全级别并利用现有结构。

简而言之:我需要将身份验证从 PHP 传递到 Apache2。这可能吗?

【问题讨论】:

    标签: php .htaccess apache2 ldap


    【解决方案1】:

    经过大量工作,感谢 cainmi 的建议,我想出了一个解决方案。 我的受保护目录的 .htaccess 如下所示

    RewriteEngine On
    RewriteBase /php-wrapper/auth
    RewriteRule ^(.*) /php-wrapper/wrapper.php?topage=https://%{SERVER_NAME}/php-wrapper/auth/$1
    

    这会将请求传递回我的 php 脚本,该脚本会检查 Auth,如果通过,则执行以下操作

    $type = (get_object_vars(apache_lookup_uri("$abs_path")));
    header('Content-type: '.$type['content_type']);
    readfile($abs_path);
    

    响应文件和正确的 MIME 类型

    因为我提供的一些内容包含 XML,我不得不禁用短打开标签。我通过将此行添加到包含包装器的目录的 .htaccess 中来实现这一点。

    php_value short_open_tag 0
    

    Stackoverflow 是找到此解决方案不可或缺的一部分,为此我感谢大家。

    【讨论】:

      【解决方案2】:

      您可以让 PHP 处理 auth,然后登录详细信息将继续由浏览器标头发送并使用 mod_auth_basic 为 .htaccess 工作。这意味着您的用户必须通过丑陋的浏览器登录窗口登录,而不是通过一个漂亮的 HTML/CSS 登录。

      【讨论】:

      • 我应该早点解释这一点,但我正在使用散列共享密钥从另一个网站传递身份验证...不幸的是,这些网站周围的政治因素使我无法将它们托管在一个域上。
      • 不是 100% 确定这是如何工作的,但请查看 this
      • 看起来不错。不知道我将如何包装 php...也许包括 html?但这看起来肯定会奏效。
      • 另一种选择是使用 .htacces 将某个目录中对 .html 文件的所有请求重定向到您的魔法 auth php 文件,如果用户通过身份验证,则包含实际的 html 文件(使用 @ 987654323@),如果它们未通过身份验证,则显示错误。这样你就不需要 .htaccess 中的 mod_auth_basic 了。
      • 在调查了可能的解决方案后,我最终使用了您的建议。解决所有错误后,我将使用我的解决方案编辑我的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-19
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      • 2015-09-05
      • 1970-01-01
      • 2012-11-08
      相关资源
      最近更新 更多