将 .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";
  
);
&lt;a href="something"&gt;hey&lt;/a&gt;

【讨论】:

当我阅读代码时这看起来是合法的,但当我运行它时它不起作用。它只是没有在末尾附加一个 .html。

以上是关于将 .html 附加到我的 href的主要内容,如果未能解决你的问题,请参考以下文章

将数据附加到 node.js 中的 formData ...我发布到我的 api 的数据总是显示为空?

如何快速将 json 附加到我的数组中

如何将 CodenameOne 源附加到我的项目?

如何将 SOAP 标头附加到我的 C# 客户端?

如何将我的域名附加到我的服务器 IP 地址 (Apache)

为啥我不能将数字附加到我的变量?!在斯威夫特 3