如何使用javascript或jQuery删除或更改我的网址中的.html扩展名?

How to remove or change .html extension in my url using javascript or jQuery?

本问题已经有最佳答案,请猛点这里访问。

我的HTML页面URL是www.example.com/training/product.html。我想把我的网址改成www.example.com/training/product。是否可以使用javascript或jquery?怎么用?


抱歉,由于声誉限制,我无法发表评论。

正确的解决方案还没有出现在评论中。

1
window.history.replaceState()

做这项工作。

我会这样做:

1
2
3
var link = 'www.example.com/training/product.html';
link.split('.html')[0];
window.history.replaceState( null, null, link );

要获得更受尊重的解决方案,请转到如何在javascript中可靠地获取不带后缀的文件名?

链接:

https://developer.mozilla.org/en-us/docs/web/guide/api/dom/operating_-browser_-history_the_-replaceState().c2.a0方法


使用javascript可以实现如下目标:

1
2
3
4
var newURL = window.location.protocol +"//" + window.location.host +"/" + window.location.pathname;
if (a.indexOf('html') > -1) { //Check of html String in URL.
   url = url.substring(0, newURL.lastIndexOf("."));
}

如果您正在查看服务器级别的更改,下面是.htaccess文件的规则

1
2
3
4
5
6
7
8
9
10
11
12
RewriteEngine On

# remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://example.com/folder/$1 [R=301,L]

# Redirect external .html requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.html([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.html$ http://example.com/folder/$1 [R=301,L]

# Resolve .html file for extensionless html urls
RewriteRule ^([^/.]+)$ $1.html[L]


您可以使用MVC来实现这一点。这不能由javascript完成。这需要在服务器端完成。


使用jquery尝试此操作:

1
2
var url ="www.example.com/training/product.html";
url = url.substring(0, url.lastIndexOf("."));