【问题标题】:Routing in static html landing page静态 html 登陆页面中的路由
【发布时间】:2015-07-31 05:14:29
【问题描述】:

我有一个基于 js/css/html 的小型投资组合登录页面。没有框架/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/

【问题讨论】:

  • 您是否尝试过将每个子域设为单独的子域?这似乎是很多网站使用的。
  • @RobertRose,你的意思是en.mysite.com 等等?我不认为这对 SEO 有好处,而且域名变得丑陋。即使是带有locale list 的微软也不会这样做。

标签: html .htaccess routing static-pages


【解决方案1】:

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

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

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

【讨论】:

  • 它可以正确使用 ru/ua,但不能从 mysite.com 重定向到 mysite.com/en
【解决方案2】:

可能正在使用引导滚动间谍,您可以将用户带到特定部分。如果您不希望在这种情况下更改 url,ajax 会帮助您。使用 jQuery,您可以触发选择更改功能 jQuery("#language-select").change(function(){ // 您的逻辑在这里尝试使用 ajax 来更改页面上的部分。})

【讨论】:

    【解决方案3】:

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

    您拥有的唯一允许您省略完整网址的机制是网络服务器能够提供“默认”页面,在您的情况下是 index.html

    同样,为了支持 mysite/ru/contacts,您需要一个目录结构:

    mysite/
          ru/
            contacts/
                 index.html
    

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

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

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

    【讨论】:

    • 当我被问到这个问题时,我想到了这个想法 =) 但是入口点呢?我需要重定向或从根目录到/en 目录,index.html 英文。
    • 您的根 index.html 可以假定为英文。对于所有其他页面,您仍然需要一个 /en 目录树,但对于默认/主页则不需要。
    猜你喜欢
    • 2018-03-09
    • 1970-01-01
    • 2013-07-23
    • 2011-08-03
    • 2012-03-18
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多