微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

htaccess临时重写规则

如何解决htaccess临时重写规则

我目前在使用.htaccess来通过“临时”和唯一链接将客户端重定向到不同内容(具有不同的路径和扩展名)时遇到一个小问题。

让我用我已经得到的一些代码解释一下

.htaccess:

RewriteEngine on
RewriteRule (.+?)$ call.PHP?code=$1 [L,QSA]

call.PHP

<?PHP
require_once("encryption.PHP");

if(isset($_GET['code']))
{
    // decryption of the code
    // the decrypted code is the content path
    $clearCode = DecryptFunction(htmlspecialchars($_GET['code']));
    
    if(strpos($clearCode,'.PHP') !== false)
    {
        include($clearCode);
    }
    else if(strpos($clearCode,'.jpeg') !== false)
    {
        $file_path_name = $clearCode;
        $ctype= 'image/jpeg';
        header('Content-Type: ' . $ctype);
        $handle = fopen($file_path_name,"rb");
        $contents = fread($handle,filesize($file_path_name));
        fclose($handle);
        echo $contents;
    }
    else if(strpos($clearCode,'.mp4') !== false)
    {
        $file_path_name = $clearCode;
        $ctype= 'video/mp4';
        header('Content-Type: ' . $ctype);
        $handle = fopen($file_path_name,filesize($file_path_name));
        fclose($handle);
        echo $contents;
    }
    
}
?>

在大多数情况下,此代码可以很好地工作,但是当请求大文件(例如视频)并在服务器端使用大量RAM时,可能会导致一些性能问题,因此我需要一种更有效的重定向客户端的方法

最好是直接从.htaccess文件进行那些重定向,但是我不知道如何从那里检索解密的路径,我不确定是否可以。然后,我可以使用apache环境变量临时存储加密路径(作为var名称)和解密路径(作为值),然后在.htaccess中检索它们,就像这样:

<?PHP
require_once("encryption.PHP");
$filePath = "some/clear/path/to/encrypt.extension";
$encryptedpath = EncryptFunction($filePath);
putenv("$encryptedpath=$filePath");
?>

<!DOCTYPE html>
<html>
<body>
 <img src = "<?PHP echo $encryptedpath;?>"/>
</body>
</html>
RewriteEngine on
RewriteRule (.+?)$ %{ENV:$1} [L,QSA]

即使我不确定它是否会非常有效,并且服务器上还需要一个循环脚本来定期转储env变量。

我还考虑过创建一个重写规则映射文件,并在旅途中使用PHP对其进行编辑,但是我真的不喜欢这种方法

那么是否可以直接从.htaccess文件调用我的PHP解密函数并将客户端重定向到清晰路径?还是我没有提到的另一种方法

我想我拥有对Apache服务器的完全控制权。

提前感谢您的回答:)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。