在静态 html 着陆页中路由

Routing in static html landing page

我有一个基于 js/css/html 的小型投资组合登陆页面。没有 frameworks/CMS,只是纯静态 html。入口点是包含英文内容的 index.html 文件。

我想在我的网站上使用翻译:index.ru.htmlindex.ua.html,但我不想在地址栏中看到任何 *.htmlindex.ua .用户可以通过我页面顶部的按钮更改语言。

如何路由:

  1. http://mysite/en 显示index.html - 首先进入站点
  2. http://mysite/ru 显示 index.ru.html
  3. http://mysite/ua 显示 index.ua.html

?

我还可以路由到特定的 div/section html 标签:用户输入 http://mysite/ru/contacts 以显示 index.ru.html 中的联系人部分吗?翻页也要改url...是真的还是假的?

也许我需要使用微框架来满足我的小需求?

编辑:

在此站点上找到了很好的示例 - http://www.even.lv/

可能正在使用 bootstrap 滚动间谍,您可以将用户带到特定的部分。如果您不希望 url 发生变化,那么 ajax 会帮助您。使用 jQuery 你可以触发 select 改变函数 jQuery("#language-select").change(function(){ // 你的逻辑 try ajax 在这里更改页面上的部分。})

为每种语言制作目录,并将相关页面放入其中。

唯一允许您省略完整 url 的机制是 Web 服务器提供 "default" 页面的能力,在您的情况下是 index.html

出于同样的原因,要支持 mysite/ru/contacts,您需要一个目录结构:

mysite/
      ru/
        contacts/
             index.html

换句话说,使用纯 html 页面并且不使用重写,您可以使用 webroot 之外的目录并创建许多单独的 index.html 页面来完成您的结构。

另一种选择是使用重写规则,例如使用 mod_rewrite 和 apache 网络服务器可用的规则。

这些规则需要对正则表达式有很好的工作理解。

尝试将其添加到您的 Root/.htaccess 中:

RewriteEngine On
RewriteBase /
RewriteRule ^en/?$ index.html [NC,L] 
RewriteRule ^(ru|ua)$ index..html [NC,L]

这会将“/en”重定向到“/index.html”,将“/ru”重定向到"index.ru.html"。