我在同一台服务器上有 2 个不同的 WordPress 网站。它们都包含指向我们内部网络上的文件的链接,这些文件使用协议进行链接file://
。
问题如下:在其中一个网站上,file://
链接在 Internet Explorer 中工作正常;我单击链接,文件夹位置会在新窗口中打开。但是,在另一个网站上,当我单击链接时file://
,什么也没有发生。我该怎么做才能使这两个网站上的链接都正常工作?
包含工作文件链接的站点使用的是 WordPress 版本 3.2.1
包含无效文件链接的网站使用的是 3.5.1 版本
file://
以下是我遇到此问题的示例链接:
file://servername/sharefolder$/sub1/sub2/sub3
答案1
如果不知道完整路径(或者某个伪路径示例,其中你为了隐私而省略了具体细节),就很难说问题是什么。但总的来说,file://
URI(统一资源标识符)方案需要主机名。如果没有主机连接到file://
URI,则应该有三个斜杠 ( ///
),而不是两个 ( //
)。
例如,如果您想访问具有/hey/there/file
您localhost
设置路径的文件,则 URL 可以是这样的:
file://localhost/hey/there/file
或者可能是这样:
file:///hey/there/file
file://
但 WordPress 3.5.1 处理URI 的方式与 WordPress 3.2.1 处理 URI 的方式可能存在问题。这GitHubGist 上的一小段代码(来自“rosshanney”似乎通过创建一个简单的插件方法来解决该问题,以使其成为WordPressfile
核心的一部分:kses_allowed_protocols
<?php
/*
Plugin name: Allow file protocol
*/
function rh_allow_file_protocol( $protocols ) {
$protocols[] = 'file';
return $protocols;
}
add_filter( 'kses_allowed_protocols', 'rh_allow_file_protocol' )