根据浏览器语言重定向用户(不是 php)[关闭]

2023-12-13

我的网站将采用 3 种语言。法语 (fr) 是默认语言。 该网站的结构如下:

根目录(注意:我没有使用 php 文件,只是简单的 html)

/fr/
    Index.html
    About-us.html
    Contact.html

/en/
    Index.html
    About-us.html
    Contact.html

/de/
    Index.html
    About-us.html
    Contact.html

我有问题:

  • 根据用户的网络浏览器语言重定向用户的最佳实践是什么?通过htaccess?
  • 我是否需要根级别的 index.html 页面(出于 SEO 原因或任何其他原因)?也许是法语的index.html?

超级简单的工具在这里:

http://www.htaccesstools.com/redirection-by-language/

使基于浏览器语言的 htaccess 重定向变得异常简单。

例子:

RewriteEngine on
RewriteCond %{HTTP:Accept-Language} (fr) [NC]
RewriteRule .* /fr/index.html [L]
RewriteCond %{HTTP:Accept-Language} (en) [NC]
RewriteRule .* /en/index.html [L]
RewriteCond %{HTTP:Accept-Language} (de) [NC]
RewriteRule .* /de/index.html [L]

这是一个硬重定向,浏览器的地址栏确实会显示新页面。不过,这对于用户体验来说比屏蔽 URL 的内部重定向更好。

为了回答您的问题,index.html 提供了最好的用户体验,这一点受到高度评价。然而,这本质上是因为人们普遍对此抱有期望(website.com/en/、website.com/fr/ 等)。就搜索引擎优化而言,不,如果您不遵循相同的结构,您就不会受到影响。

最佳实践是使用您的最佳猜测(例如 htaccess),并且仍然提供用于切换语言的菜单。另外,如果 Accept-Language 未实际定义(例如默认情况下转到 /en/ ),您还需要后备。这可能是 htaccess 中的最后一行,也可能只是index.html在根级别,其中.htaccess is.

除此之外,本地化方面并没有做太多的工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据浏览器语言重定向用户(不是 php)[关闭] 的相关文章

  • Bootstrap .row margin-left: -15px - 为什么它会缩进(来自文档)

    我在 Bootstrap 文档中看到了这一行 http getbootstrap com css grid intro http getbootstrap com css grid intro It says 列通过填充创建装订线 列内容之
  • 裁剪响应式全宽图像

    我必须剪辑跨越整个宽度的图像 以下事情对我不起作用 剪辑 这需要绝对位置 因此块元素不会堆叠在下面 背景位置 缩放时无法正确剪辑 放大时剪辑的部分会增加 反之亦然 包装器 包装器高度取决于浏览器宽度 因此其值应该是动态的 我使用了 seti
  • .htaccess - 将多个子目录重写到根目录

    我正在尝试将多个子目录重写到根目录 我遇到的情况是我有一个名为blog 其中将包含主站点文件夹和另一个名为的子目录项目 包含我想从根目录访问的其他文件夹 www blog work contact projects projectA pro
  • 禁用 HTML 验证。如何为全局每个表单设置“novalidate”?

    我想知道是否可以做一些事情来禁用应用程序中每个表单的 HTML 验证 有什么办法可以做到这一点或者我应该添加novalidate每个表单标签的属性 看来唯一的方法是添加novalidate使用 JavaScript jQuery 为每个表单
  • 等高列并将最后一项与底部对齐

    我有一个列表 其中每个li有嵌套容器 我尝试为所有列表项保留相同的高度 并将最后一个 div 推到底部 我将如何使用 flex 来做到这一点 ul list container display inline flex justify con
  • 如何使弹出窗口溢出:在溢出内可见:自动上下文

    我有一个 div 列表 如果超过父框 overflow x 应该滚动 并且在悬停时 我想看到一个弹出窗口 我的问题是 如果我将鼠标悬停在任何子 div 上 弹出窗口将被考虑用于溢出计算 但我只想让它在所有内容之上可见 而不是使其扩展滚动区域
  • 无法使用python和beautifulsoup抓取网页中的某些href

    我目前正在使用 Python 3 4 和 bs4 爬取网页 以收集塞尔维亚在里约 2016 年的比赛结果 所以网址here http rio2016 fivb com en volleyball women teams srb serbia
  • 使用 ASP.Net 和 Ajax 的登录页面

    我正在尝试使用 html ajax 和 ASP NET 制作登录页面 数据确实传递给 ajax 函数 但是当我调试 asp 页面时 用户名和密码以 NULL 发送 该代码应该获取用户名和密码 然后返回用户 ID html页面 div Use
  • 通过按 Enter 键提交表单而不使用提交按钮

    好吧 我试图通过按 Enter 键来提交表单 但不显示提交按钮 如果可能的话 我不想涉足 JavaScript 因为我希望一切都能在所有浏览器上运行 我知道的唯一 JS 方式是使用事件 现在的表格看起来像这样
  • 滚动时多个图像淡出

    我有一个页面 在每个导航点上 网站中间的图像通过淡入淡出来改变颜色 我设法淡入 active3 fadeIn 2000 不过 我遇到了再次淡出它的问题 让我尝试解释一下 我有 5 个导航点和 5 个不同的图像 如果我 例如 从第一个导航点滚
  • 单击表格行可显示更多信息

    我正在尝试使用 jQuery 来实现以下目标 当单击一个表格行时 会显示表格行内的 info div 如果单击另一个表格行 则当前显示的任何其他 info 元素将被隐藏 并根据表格行显示新的 info div已被点击 这个问题是 代码无法正
  • 重新加载页面时删除哈希值?

    我使用哈希来切换我的图像滑块 当我重新加载页面并且哈希值设置为 e h 3 没有图片 当图库在几秒钟后自动滑动时 它显示下一个 所以几秒钟内什么也没有 有没有办法在加载页面时检查哈希并将其删除 我只想关心那些用散列为页面添加书签的人 问候
  • 同一元素上的“itemprop”和“rel”属性

    使用是否有效itemprop属性and the rel同一元素上的属性 示例来自Google 的站点名称文档 https developers google com search docs data types sitename包含 这给出
  • 在问题内显示内联块文本

    我一直在尝试显示内联块 如果我没有在 div 中添加任何内容 一切都会很好 但是当我这样做时 div 会折叠起来 我不知道确切的原因 任何想法 https jsfiddle net giancorzo ebqoptbd https jsfi
  • 有没有一种方法可以在没有输入的情况下发送表单值

    假设我有以下表格
  • Ionic 2:隐藏滚动条并继续滚动

    我只想hide滚动条 在需要滚动的页面中 我正在使用离子2 My 不工作解决方案 scroll content bar overflow hidden 此解决方案隐藏滚动条but使屏幕不可滚动 首先 改变浏览器的自然行为和预期的用户体验是一
  • Bootstrap 响应式表格在 iOS 设备上无法垂直滚动

    这就是我所拥有的 div class table responsive table class table style background transparent table div 我正在使用以下 bootstrap css 文件 ht
  • HTML5 文件 API 和 AJAX 上传分块问题

    我编写了一个带有单独进度的拖放多个文件上传等 除了一件事之外 它工作得非常好 上传较大文件时 有时浏览器会锁定 直到上传完成 我认为这是因为该文件存储在浏览器的内存中并占用了浏览器可用的所有资源 我想知道 是否可以逐段读取文件并在读取时通过
  • 如何将MathJax公式转换为img

    Mathjax 现在在我的项目中运行良好 但有一个问题 有没有办法将MathJax的公式 纯html和css 转换成img文件 我可以保存 MathJax 可以配置为生成 SVG 看http docs mathjax org en late
  • WordPress 子文件夹安装重定向到根目录

    我遇到了一个奇怪的问题 我有我的主站点 mesopinions ca 它是一个 WordPress 安装 我还有几个子域 有自己的 WordPress 安装 无多站点 它与 concours mesopinions ca 子文件夹配合得很好

随机推荐

  • ionic firebase - TypeError:Object(...) 不是 Firebase.getToken 中的函数

    我正在遵循一个小教程来安装和使用 firebase 但我什至无法通过我必须做的部分 this firebase getToken then token gt error gt 因为我有这个错误 类型错误 Object 不是函数 在 Fire
  • PCL 库的 PCLConfig.cmake 和 pcl-config.cmake 文件的位置

    我使用以下命令安装了 PCL sudo add apt repository ppa v launchpad jochen sprickerhof de pcl sudo apt get update sudo apt get instal
  • 使用 pd.read_clipboard 复制数据帧时如何处理自定义命名索引?

    鉴于其他问题的数据框 Constraint Name TotalSP Onpeak Offpeak Constraint ID 77127 aaaaaaaaaaaaaaaaaa 2174 5 2027 21 147 29 98333 bbb
  • 使用 Google 帐户 UserService 时如何更新 App Engine 应用程序名称

    我有一个现有的 App Engine Java 应用程序 我们使用用户服务用于对我们的用户进行 Google 帐户身份验证 We d like to update the Application name that shows up on
  • 是否有与 XmlWriter.WriteRaw 等效的 XElement?

    我正在转换一些当前使用的代码XmlWriter创建一个文档来代替返回XElement的内容 到目前为止 我很喜欢以模仿文档结构的方式构建代码 但有些内容是使用XmlWriter WriteRaw以避免重新 xml 化 xml 我在中找不到任
  • 为Web应用程序自定义工作目录运行gradle运行任务/项目结构

    我正在开发小型网络应用程序 我想提供静态文件 我在用着application插入 其中一部分是distribution复制的插件src main dist文件放入发行版 zip 中 运行应用程序gradlew run使用项目目录作为工作目录
  • 如何在具有 Oreo 及以上操作系统的 Android 设备中从 uri 获取文件路径

    要使用 Intent 选择音频文件 我正在使用此功能 fun selectAudioFromStorage val pictureActionIntent Intent Intent ACTION GET CONTENT null pict
  • 通过MATLAB连接postgresql数据库报错

    我正在尝试在 MATLAB 中连接我的 Postgres 数据库 但它向我抛出一个错误 指出 JDBC Driver Error org postgresql Driver Driver Not Found Loaded 这是我使用过的连接
  • 3d 矩阵转 2d 矩阵 matlab

    我使用的是Matlab R2014a 我有一个 3 维 M x N x M 矩阵 A 我想要一种矢量化方式从中提取 2 维矩阵 B 这样对于每个 i j 我有 B i j A i j g i j 其中 g 是大小为 M x N 的二维索引矩
  • Println 改变切片的容量

    考虑下面的代码 package main import fmt func main x byte a fmt Println x fmt Println cap x cap byte a prints false y byte a fmt
  • iOS 如何下载大文件?

    我正在尝试通过 HTTP 请求从 Web 服务器下载文件 gt 40MB 为此 我使用了苹果提供的 SimpleURLConnection 示例 在该示例中 他们只下载图像文件 因此我修改了代码以下载 pdf 文件并将其存储在应用程序的文档
  • 将所有内容与页面底部对齐?

    我正在尝试将 html 页面与浏览器窗口的底部对齐 这是我的方法 div class outer wrapper div outer wrapper min height 950px width 100 position absolute
  • 动态创建的单选按钮列表

    有一个母版页 内容页面有一个包含请求变量的超链接列表 您单击其中一个链接即可转到包含单选按钮列表的页面 也许 第一个问题 当我到达新页面时 我使用其中一个变量来确定是否将单选按钮列表添加到页面上的占位符中 我尝试在 page load 中执
  • 从 mysqli 更改为 pdo

    我对这段代码没有问题 它出奇地工作正常 但我真的不明白它是如何工作的 甚至不明白它是否正确 所以 我对 mysqli 进行 ajax post 或 get 调用的查询如下 con mysqli connect localhost root
  • Lisp中最长的元素链

    语句 找出最长的字符链并返回 例如 输入 1 2 2 3 3 3 4 4 4 4 5 6 输出 4 4 4 4 问题 我可以设法识别列表中的所有不同组并比较它们 但无法让函数返回正确的子集列表 它仅返回最后分析的组 code define
  • 使用 JSOUP 登录 ConEd 网站

    我已经广泛阅读了有关如何做到这一点的内容 并且尝试了许多不同的变体 但我无法让它发挥作用 基本上 我只想登录 ConEdison 网站并抓取我的账单历史记录 这是我所拥有的 Connection Response loginForm Jso
  • 在 django - python 中按名称搜索选择字段

    我在模型中有以下选择字段 STATUS REVIEW RISK ESTIMATE CHOICES 0 High 1 Medium 2 Low class SiverifyProblemStatement models Model risk
  • Bigquery在单个选择中多次取消嵌套

    对此进行跟进 Bigquery 组合来自 2 个不同表的重复字段 ElliottBrossard 的上述解决方案正是我所寻找的 谢谢 我需要从上面取消嵌套字段以获取学生的聚合 比如说 有一个额外的成本字段 每门课程 例如假设上面的输出在st
  • 如何检测wcf服务端的绑定

    假设我有一个 WCF 服务 其中多个端点具有不同类型的绑定 如 tcp basichttp wshttp 等
  • 根据浏览器语言重定向用户(不是 php)[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我的网站将采用 3 种语言 法语 fr 是默认语言 该网站的结构如下 根目录 注意 我没有使用 php 文件 只是简单的 html fr Index html About us