静态网站的漂亮URL
Pretty URL for static website
我正在创建一个"静态"网站,我想有这样的url:http://www.my-website/my-page-1
或http://www.my-website/my-page-2
我使用jQuery方法load()来加载我的网页内容。这是我的index.html:
<body>
<nav>
<ul >
<li id="my-page-1-menu-item" class="menu-item" onclick="changeState('my-page-1')">
<span><a>Link 1</a></span>
</li>
<li id="my-page-2-menu-item" class="menu-item" onclick="changeState('my-page-2')">
<span><a>Link 2</a></span>
</li>
</ul>
</nav>
<!-- Content, loaded with $.load() -->
<div id="content"></div>
</body>
我知道如何改变我的url而不重新加载页面,使用历史API
这是我的javascript:
function changeState(url) {
window.history.pushState(url, 'Title', url);
loadStateData(url);
}
function loadStateData(state) {
var content = '#content';
$(content).load( 'views/' + state + '.html');
// Manage menu style
$('.menu-item').removeClass('active');
$('#' + state + '-menu-item').addClass('active');
}
有了这个代码,我可以通过点击Link 2
到达http://www.my-website/my-page-2
,但是如果我刷新我的网页,或者如果我直接在浏览器地址栏中输入http://www.my-website/my-page-2
,我得到了一个404错误。
我不太适应。htaccess URL重写,但我认为它应该解决我的问题。
我不想使用AngularJS或其他类似的框架(除非它是一个非常轻量级的框架)
你需要确保当你使用JavaScript:
- 修改当前页面的DOM,使其实际上是一个不同的页面
- 更改URL以识别不同的页面
…,您还确保服务器可以生成该页面本身
。这样,如果JavaScript因为任何原因失败了,那么一切仍然可以工作。这是最佳实践应该遵循的基本原则。
这可能涉及到复制你的逻辑服务器端,这可能会有很多工作。健壮性+客户端性能的hack并不便宜。考虑使用同构JS和使用无头浏览器获取页面快照来加快速度。
我不太适应。htaccess URL重写,但我认为它应该解决我的问题。
这肯定不能很好地解决。你可以用它来转移每一个请求回到你的主页(所以你有重复的内容在每个URL),然后使用客户端JS读取location
,并找出什么内容加载,但随后你不妨使用hashbangs,因为你已经扔掉了使用pushState
的每一个优势,但添加了重复的内容URL到你的网站(并投入了一堆工作来创建这些重复的内容URL)。
在没有任何服务器端重写的情况下这样做似乎是不可能的。当您刷新页面时,HTTP服务器需要根据URL为您提供适当文件的内容。
但. .如果你真的想让URL重写客户端,你可以做一个,通用重写,因为它通常是在基于PHP的网站内部进行重写的情况下完成的(不是通过。htaccess或nginx规则,而是使用PHP脚本)。当没有这样的文件,如"/my-page-2"在web服务器上,只是重定向客户端到/index.html?url=/my-page-2并使用JavaScript分派到适当的子页面
- 如何使用url加载程序在webpack中导入多个图像
- 使用php或javascript从facebook相册URL中删除多余的部分
- Angular JS IE9 Hashbang url rewriting
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- 直接下载文件,而不是从window.open(url)
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 漂亮照片图片库中的Facebook赞按钮
- 通过js在新选项卡中有条件地打开url
- CKFinder 3为所选文件返回错误的URL
- 如何获取不属于我项目的上一页的URL
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 在URL中传递JS对象
- 将纯文本URL转换为可单击链接
- Javascript html每点击一次就会更改url
- 以角度管理动态URL
- 使用skel框架构建的响应式网站只有在使用漂亮的URL时才能应用css
- RequireJS与PHP和漂亮的URL
- 从angularjs中删除#并使url变得漂亮
- 静态网站的漂亮URL
- ajax提交请求与漂亮的URL