将.html附加到我的href

时间:2015-09-04 00:08:36

标签: javascript html url nginx codeanywhere

这可能看起来像服务器问题,但我认为它更多地依赖于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>

由于我每次想要进行制作并在我拉动副本并想要编码时添加.html时手动更改这些href,因此必须有一个简单的方法。
无论如何,我可以解决使用HTML或JS ?或者任何其他开箱即用的想法......将不胜感激。

2 个答案:

答案 0 :(得分:2)

codeanywhere文件资源管理器中,您可以将重写指令添加到.htaccess文件中:

  

此信息来自codeanywhere:

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

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

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

应该将foo.html重写为foo

More info here关于.htaccess重写规则。

答案 1 :(得分: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>