gpt4 book ai didi

docpad - 如何使用 DocPad 部署不在服务器根目录下的站点?

转载 作者:行者123 更新时间:2023-12-04 19:30:50 26 4
gpt4 key购买 nike

我正在使用 DocPad 制作一个演示站点,我想将它部署在例如: http://www.example.com/demo/但是当我使用 docpad generate --env static 时,链接是相对于服务器的根而不是演示目录的,所以链接被破坏了。我能做什么 ?是否有要在某处声明的元数据?

编辑:在这种情况下,我使用 Twitter Bootsrap 骨架,因此例如默认布局中主导航中的链接如下所示:

<div class="nav-collapse collapse">
<ul class="nav">
<% for document in @getCollection('pages').toJSON(): %>
<li class="<%= 'active' if @document.url is document.url %>">
<a href="<%= document.url %>"><%= document.title %></a>
</li>
<% end %>
</ul>
</div>

最佳答案

我写了一个小插件来完成这项工作,可能有更好的解决方案,但它工作正常:

# Export Plugin
module.exports = (BasePlugin) ->
# Define Plugin
class absolutePathPlugin extends BasePlugin
# Plugin Name
name: 'absolutepath'
config:
url: "/"

renderAfter: (opts,next) ->
docpad = @docpad
if 'static' in docpad.getEnvironments()
docpad.log 'debug', 'Writing absolute urls'
href = 'href="' + @config.url
src = 'src="' + @config.url
database = docpad.getCollection('html')
database.forEach (document) ->
content = document.get('contentRendered')
if /href="\//.test(content)
content = content.replace(/href="\//g, href)
if /src="\//.test(content)
content = content.replace(/src="\//g, src)
document.set('contentRendered',content)
next()?
else
next()?

# Chain
@

在我的 docpad.coffee 文件中,我只需要配置 url,如果你使用 cleanUrls 插件,你必须调整 getRedirectTemplate 函数以考虑绝对 url:

plugins:
absolutepath:
url: "http://www.example.com/demo/"
cleanurls:
getRedirectTemplate: (document) ->
absolutepath = docpadConfig.plugins.absolutepath.url.slice(0, - 1)
"""
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>#{document.get('title') or 'Redirect'}</title>
<meta http-equiv="REFRESH" content="0;url=#{absolutepath + document.get('url')}">
</head>
<body>
This page has moved. You will be automatically redirected to its new location. If you aren't forwarded to the new page, <a href="#{absolutepath + document.get('url')}">click here</a>.
</body>
</html>
"""

关于docpad - 如何使用 DocPad 部署不在服务器根目录下的站点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14245520/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com