Html 如何将SVG中的链接编写为URL相关链接,而不是Web服务器根(文件系统)相关链接?

Html 如何将SVG中的链接编写为URL相关链接,而不是Web服务器根(文件系统)相关链接?,html,url,svg,hyperlink,Html,Url,Svg,Hyperlink,当我在SVG文件中添加链接时,如 <a xlink:href="target.htm"></a> 然后,该链接被视为相对于SVG所在位置的文件系统,例如(假设Wordpress设置),它变成www.example.com/Wordpress/wp content/themes/mytheme/mysvgfolder/target.htm 在HTML中执行此操作时(与SVG文件位于相同的文件系统路径中),如,则无论实际的文件系统路径是什么,链接实际上都会得到www.e

当我在SVG文件中添加链接时,如

<a xlink:href="target.htm"></a>

然后,该链接被视为相对于SVG所在位置的文件系统,例如(假设Wordpress设置),它变成
www.example.com/Wordpress/wp content/themes/mytheme/mysvgfolder/target.htm

在HTML中执行此操作时(与SVG文件位于相同的文件系统路径中),如
,则无论实际的文件系统路径是什么,链接实际上都会得到
www.example.com/prettyurl/target.htm

我必须如何在SVG文件中输入相对链接才能真正获得(HTTP-)URL相对链接,这些链接符合我的prettylink结构


绝对路径对我来说是没有选择的,因为SVG文件要在不同的域和不同的文件系统路径中使用。

您不需要将域放在您可以使用的位置

<a xlink:href="/wordpress/wp-content/themes/mytheme/mysvgfolder/target.htm">

这将展开以反映域,但不会相对于文件位置


或者使用HTML
标记,然后所有相关链接都将相对于
标记位置。当然,如果你这样做了,你就需要小心内部链接。

绝对URL对你来说是不合适的,对吗?@kwoxer是的,因为我编写的SVG文件应该在多个站点上工作,并且总是相对于自身链接(但关于实际URL,而不是它们的文件系统路径-因此,就像常规HTML链接一样)。为什么不直接通过htaccess重定向呢?但是SVG应该在多个位置使用(这些位置可能不一定在
/wordpress/…
下,但可能在
/joomla/…
/mycustompage/…
下)。我需要的是
引用当前的HTTP-URL(
example.com/games/[something]
)。另外:当然,不必将
example.com/games/
硬编码到SVG中。因此,问题实际上是:如何使“SVG-a的行为类似于HTML-a”?因此,我可以在不中断任何链接的情况下移动SVG(就像它处理包含相对链接的HTML文件一样),HTML和SVG链接的工作方式完全相同。如果HTML链接起作用,那么SVG链接也会起作用,因为它们是相同的东西。同样,如果SVG链接不起作用,HTML链接也不会起作用。当我把一个文件
foo.htm
和一个文件
foo.svg
放在同一个服务器文件夹(
/var/www/mysite/subfolder
)中时,你需要把问题弄清楚,因为我不明白你想在我的系统(Apache2.4交付给Firefox)中对HTML和SVGOn有什么区别。两者都带有指向
target.htm
的链接。然后转到
www.example.com/prettyurl/foo.htm
并将链接悬停到
www.example.com/prettyurl/target.htm
。但是,在
www.example.com/prettyurl/foo.svg
中,当悬停链接时,我会被引导到
www.example.com/mysite/subfolder/target.htm
。所以,很明显,他们在最终用户身上的行为不同。我刚刚找到了问题的原因。对于相对HTML链接,目标URL是从漂亮的URL创建的(就像用户在浏览器中看到的那样)。但对于SVG,如果SVG通过
包含,则它实际上是从
数据路径创建的。但是,由于我在重写URL之前通过PHP动态构建这个
数据
字符串,
数据
路径显然是相对于Web服务器根目录的普通文件系统路径。我需要重新编码这个PHP部分。我会接受你的回答,因为最终它会引导我走上正确的道路