1

我正在开发一个网站,可以从我们内部网中的几个远程位置以及整个 Internet 上查看该网站。由于远程位置的带宽限制,我们正在对某些文件类型(视频文件、flash 对象等)实施有条件的重写,这些文件将本地存储在每个物理位置的服务器上。但是,由于安全要求,我们无法在这些远程计算机上激活 Web 服务器,因此我们必须能够使用 Samba 共享重定向到 UNC 路径。

通过在中央 Apache 服务器上使用 mod_rewrite,我们有一个适合我们当前需求的工作解决方案,如下所示:

RewriteEngine on
RewriteCond %{REMOTE_ADDR} ^10\.
RewriteCond %{REQUEST_URI} \.(swf|mp3|wav|wmv|mov)$
RewriteRule ^(.*)/([^/]+)$ unc_redirect.php?server=myserver&path=sharename&file=$2 [R,L]

然后我们的 php 脚本使用 header('Location: ') 重定向到所请求文件的 UNC 路径,如下所示:

<?php
$Str_Location='file://///'.$_GET["server"].'/'.$_GET["path"].'/'.$_GET["file"];
header('Location: '.urldecode($Str_Location), 1, NULL);
?>

正如我所提到的,这个解决方案似乎可以很好地满足我们当前的需求。然而,它只适用于 Internet Explorer,并且只有当网站被 IE “信任”时(Firefox、Safari 和 Opera 的行为都略有不同,但没有一个会遵循 php 脚本的重定向)。现在这不是一个真正的问题,因为 IE 是 PC 上唯一可以触发重写条件的浏览器,但在我看来,可能有更好/更优雅的方式来实现相同(或更好)的结果.

关于重定向在 IE 中工作但没有其他浏览器的原因,我有自己的理论,但我基本上是这个领域的新手,所以我想我可能会问专家你的看法。

4

0 回答 0