“file://” 链接在一个 WordPress 网站上有效,但在另一个网站上无效。两个网站都在同一台服务器上运行

“file://” 链接在一个 WordPress 网站上有效,但在另一个网站上无效。两个网站都在同一台服务器上运行

我在同一台服务器上有 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/filelocalhost设置路径的文件,则 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' )

相关内容