【问题标题】:Enable/Disable htaccess with PHP?使用 PHP 启用/禁用 htaccess?
【发布时间】:2019-06-19 19:35:15
【问题描述】:

有没有办法对网站用户禁用 htaccess?我需要的是 htaccess 仅对我的网站用户的选定组禁用以访问充满上传图像的目录,并且对未选定的用户启用 htaccess 以阻止他们访问目录!

任何帮助都会很棒!

【问题讨论】:

  • 您可以放入htaccess 文件中的任何内容都可以放入apache 配置中。这样做并完全关闭 htaccess。作为奖励,您将获得更高的性能、安全性和稳定性。

标签: php html .htaccess directory


【解决方案1】:

您需要这样做:基本上将所有请求重定向到一个 php 文件,然后由该文件进行访问控制。

.htaccess

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /CheckAuthorizedToFile.php?file=$1 [NC,L,QSA]

CheckAuthorizedToFile.php

<?php


$basepath = '/path/to/images/';
$realBase = realpath($basepath);

$userpath = $basepath . $_GET['file'];
$realUserPath = realpath($userpath);

if ($realUserPath === false || strpos($realUserPath, $realBase) !== 0) {
//prevent directory traversal by exiting execution
exit();
} 

if($_SESSSION['IsAllowedToViewFiles']===true)
{


$file = $_GET['file'];
$type = 'image/jpeg';
header('Content-Type:'.$type);
header('Content-Length: ' . filesize($file));
readfile($file);
}
else
{
echo "Not Autorized please login.";
}

【讨论】:

    【解决方案2】:

    htaccess 在 php 之外进行管理(例如通过 apache 环境),并在 php 脚本启动之前被扫描和执行。所以答案是否定的。

    这与“使用 PHP 启用/禁用 htaccess?”有关。 Apache 本身可以管理用户的访问控制。但这又超出了 PHP 的控制范围。

    可能的 PHP 解决方案:禁止所有 apache 访问目录,并在用户验证后通过 php 传递内容/文件。

    【讨论】:

    • 感谢您告诉我!
    • 也可以使用htpasswd来限制对目录的访问,但是只有直接访问目录才有用。
    猜你喜欢
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    • 2016-11-04
    相关资源
    最近更新 更多