2011-05-13 31 views
0

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

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

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

回答

2

经过大量工作,感谢cainmi的建议,我提出了一个解决方案。 我对保护目录的.htaccess看起来像这样

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

这传递请求回我的PHP脚本检查验证,如果它通过执行以下操作

$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是找到此解决方案不可或缺的部分,为此我感谢大家。

1

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

+0

我应该早些时候解释这一点,但我使用散列共享密钥来通过另一个网站的身份验证......不幸的是,围绕网站的政治阻止我将它们托管在一个域中。 –

+0

不是100%确定这是如何工作的,但看看[this](http://www.askapache.com/htaccess/tricks-for-controlling-htaccess-basic-authentication-with-php-and-mod_rewrite。 HTML#M0-askapache0)。 – 2011-05-13 05:28:30

+0

看起来不错。不知道我将如何包装的PHP ...也许包括HTML?但看起来它确实可以工作。 –