将 .html 附加到我的 href
Posted
技术标签:
【中文标题】将 .html 附加到我的 href【英文标题】:Append .html to my href 【发布时间】:2015-11-29 23:26:22 【问题描述】:这可能看起来像一个服务器问题,但我认为它更多地属于 SO 而不是 SF。
长话短说,我有一个 nginx 服务器,它会自动将 .html 聚合到我在后端的页面中,以便用户只能看到:
mysite.com/somepage
而不是
mysite.com/somepage.html
所以在我的代码中,我的链接如下所示:
<ul>
<li class="current"><a href="somePage"></a></li>
<li class="menu"><a href="somePage2"></a></li>
</ul>
然后 nginx 发挥了它的魔力,并在其中偷偷添加了一个 .html。
当然,这在我的开发环境(由 CodeAnywhere.com 控制的环境)中不起作用,因此我必须像这样添加扩展:
<ul>
<li class="current"><a href="somePage.html"></a></li>
<li class="menu"><a href="somePage2.html"></a></li>
</ul>
由于每次我想投入生产时手动更改这些href,并在我拉取副本并想要编码时添加回.html,因此必须有一个简单的方法来解决这个问题。 无论如何,我可以解决那个使用 HTML 或 JS?或任何其他开箱即用的想法......将不胜感激。
【问题讨论】:
您是否考虑过设置.htaccess
文件?
您在开发机器上使用网络服务器吗?您可以在该服务器上设置 URL 重写吗?
@Steve 我不能使用这样的文件,因为我使用的是 nginx 而不是 apache。尽管我的开发环境可能是使用 apache 设置的,但我想我会调查一下。
@raduation 我不能。我必须联系 codeanywhere.com 支持,因为他们正在管理我的开发机器
@phadaphunk 看起来 .htaccess
可以转换为等效的 nginx:***.com/questions/8711678/… 有帮助吗?
【参考方案1】:
在您的codeanywhere
文件资源管理器中,您可能会向.htaccess
文件添加重写指令:
此信息来自codeanywhere:
如果文件资源管理器中未显示
.htaccess
文件,则必须将服务器添加为 SFTP。 如果您想编辑.htaccess
文件,请确保您的服务器支持它并且您添加了正确类型的服务器。
在.htaccess
文件中尝试添加此规则:
RewriteCond %REQUEST_FILENAME.html -f
RewriteRule !.*\.html$ %REQUEST_FILENAME.html [L]
那应该将foo.html
重写为foo
↳ More info here 关于.htaccess
重写规则。
【讨论】:
在运行时不知何故忽略了 htaccess 文件。我会在任何地方联系 codeanywhere 以确切了解他们需要如何设置。 是的,可能是个好主意;似乎他们的文档中没有包含一些关于它的具体细节。【参考方案2】:把这个放在一个临时的script
标签中:
document.addEventListener("click",function(event)
if(event.target.tagName=="A")
if(!event.target.href.endsWith(".html"))event.target.href+=".html";
);
<a href="something">hey</a>
【讨论】:
当我阅读代码时这看起来是合法的,但当我运行它时它不起作用。它只是没有在末尾附加一个 .html。以上是关于将 .html 附加到我的 href的主要内容,如果未能解决你的问题,请参考以下文章
将数据附加到 node.js 中的 formData ...我发布到我的 api 的数据总是显示为空?