我正在尝试为特定文件的路径别名
我试过了:
Alias /Console "/console/console.html"
现在去http://example.com/Console
确实带来了console.html
。
console.html
但是从内部(即)引用的任何相关资源都images\1.jpg
失败了,因为它似乎进入了 document_root
我究竟做错了什么?
我正在尝试为特定文件的路径别名
我试过了:
Alias /Console "/console/console.html"
现在去http://example.com/Console
确实带来了console.html
。
console.html
但是从内部(即)引用的任何相关资源都images\1.jpg
失败了,因为它似乎进入了 document_root
我究竟做错了什么?
这是与您使用相对 URL 相关的客户端问题。
/console/console.html
由于您正在有效地从to重写 URL/Console
,因此任何相对 URL(到图像、CSS、JS 等)现在都将相对于文档根目录而不是/console
子目录。您需要“修复”您的相对 URL 并使它们与根相对(即以斜杠开头,如
/console/images/1.jpg
)或使它们绝对。或者,您可以在HTML 文档
base
的部分中包含一个元素。head
这引用了所有相对 URL 都相对的绝对 URL 。换句话说,由于您希望这些相对 URL 与/console/console.html
文档相关,因此将以下内容添加到该head
部分:现在,一个相对 URL,例如
images/1.jpg
在文档中引用的 URL/Console
将 requesthttp://example.com/console/images/1.jpg
,而不是http://example.com/images/1.jpg
.但是,使用该
base
元素有一些注意事项。值得注意的是,如果您有使用片段标识符的页内相对链接,例如href="#some-id"
. 这现在也与您的base
元素相关,因此页内链接现在可能已损坏。解决此问题的唯一方法是完全限定链接。参考:
https ://developer.mozilla.org/en-US/docs/Web/HTML/Element/base
但是,
Alias
映射到单个文件时使用的指令不是正确的,因为Alias
是前缀匹配,所以/Console/foo
也会映射到/console/console.html/foo
。您也许可以AliasMatch
改用:这将只映射
/Console
。或者,您可以改用 mod_rewrite 并发出内部 rewrite。(与外部重定向相反,外部重定向会更改 URL 并导致客户端发出第二个请求。)例如: