1

这可能看起来像一个服务器问题,但我认为它更多地属于 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解决这个问题吗?或任何其他开箱即用的想法......将不胜感激。

4

2 回答 2

2

在您的codeanywhere文件资源管理器中,您可能会向.htaccess文件添加重写指令:

此信息来自codeanywhere:

  1. 如果.htaccess文件未显示在文件资源管理器中,则必须将服务器添加为 SFTP。
  2. 如果您想编辑.htaccess文件,请确保您的服务器支持它并且您添加了正确类型的服务器。

.htaccess文件中尝试添加此规则:

RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [L]

那应该重写foo.htmlfoo

更多关于.htaccess重写规则的信息。

于 2015-09-04T00:20:53.387 回答
0

把它放在一个临时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>

于 2015-09-04T00:26:29.393 回答