- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我已经准备好为我的多语言网站使用子目录格式。
我的第一个问题是:
对于搜索引擎优化,我必须翻译的网页名称在网址或它是无用的?
例子:
- Same filename
site.com/fr/login
site.com/en/login
- Different filename
site.com/fr/connexion
site.com/en/login
site.com/en
和
site.com/fr
吗?或者让我设置一个默认的本地,并让我的url像
site.com/page
和
site.com/fr/page
最佳答案
作为先决条件,我假设您没有使用框架/库。此外,我从来没有解决过类似的问题,只使用.htaccess(作为您问题请求的标题),因此不知道是否有可能这样做。不过,以下指导原则可能会对您有所帮助。
你的第一个问题
一般来说,网页的文件名和路径会影响其排名。此外,使用本地语言的页面名称和路径可能有助于用户记住最重要的url,即使不给它们加书签。
尽管如此,我从不为属于web应用程序一部分的页面翻译页面名称或目录(而不是信息页面或促销页面)。
你提到的登录页面就是一个很好的例子。我几乎可以肯定,你不希望你的网站被发现,因为它的内容在其登录页面。实际上,有很多网站根本不包括登录页面和其他应用程序页面。
相反,在搜索引擎优化方面,把你的努力放在你的宣传和信息页面上。提供有价值的内容,解释你或你的网站有什么特别之处,并尽一切可能让这些页面得到正确的索引。imho,静态html页面是这样做的最佳选择。
此外,如果您翻译属于您的实际应用程序的页面名称,您将遇到巨大的麻烦。例如,成功登录后,应用程序可能会将用户转移到其个人仪表板,该仪表板可能基于另一个HTML模板/页面。如果您已经将该页面名称翻译成不同的语言,那么您的应用程序将必须注意让用户使用正确的版本。基本上,这意味着您需要尽可能多的应用程序版本作为您想要支持的语言。当然,也有办法让生活更轻松,但这将是一个持续的痛苦,绝对不值得努力。
总结一下:创建静态页面,显示您的usp(独特的卖家位置),并向用户提供有价值的内容(例如复杂的教程等)。翻译这些页面,包括名称和路径,并以各种方式搜索引擎优化他们。但是对于实际的应用程序来说,优化它的页面是毫无意义的,甚至会适得其反。
你的第二个问题
我永远不会使用基于IP的重定向有几个原因。
首先,在非本国的国家有许多客户。例如,是否确实要将所有以英语为母语的人重定向到您的匈牙利页面,因为他们目前正在匈牙利出差?
第二,现在越来越多的用户出于不同的原因使用vpn,因此经常隐藏他们目前所在的国家。
第三,哪个IP地址属于哪个提供商或国家是高度不稳定的;你必须不断更新你的数据库才能跟上。
有更多的原因,但我认为你已经有了这个想法。
幸运的是,您的问题有一个解决方案(请参阅下面的“最后一句话”):每个浏览器在从服务器获取页面时,都会告诉服务器首选和接受的语言。例如,apache可以直接在RewriteRule
语句中使用该信息,并将用户重定向到正确的页面。
如果您不能改变服务器的配置,那么您可以在您的cgi程序中计算相应的头。
在进行研究时,请查找Accept-Language
htp1.1头。一个好的起点可能是here。
你的第三个问题
你最终在第三个问题上混淆了两件事。语言环境与语言不同。一方面,你要求“…从…”获取本地信息,另一方面,你说“…lang=fr…”,这样就给人留下了想要获取语言的印象。
如果你想得到语言:看我对你第二个问题的回答,或者从当前路径解析语言(正如你已经建议的那样)。
如果你想得到现场,事情会更复杂。唯一合理的自动方法是从语言派生语言环境,但这通常会失败。例如,在做研究时,我通常更喜欢英语,但另一方面,我位于德国,因此希望日期和时间采用我习惯的格式,因此从我的首选语言派生出我所需的语言环境将失败。
不幸的是,没有http头可以告诉服务器用户喜欢哪个语言环境。作为起点,this article可能会对您有所帮助。
关于如何解决这个问题,请参阅最后的评论(下一节)。
最后评论
正如上面链接的文章已经指出的那样:让用户满意的唯一可靠方法是让他在应用程序中选择他的语言、语言环境和时区。您可以将用户的选择存储在cookies或后端数据库中;每个选项都有自己的优缺点。
我通常在我的项目中使用所有方法(http头、cookies、数据库)的组合。
关于.htaccess - 多语言网站的Htaccess和网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42899101/
是否可以在 .htaccess 中包含来自另一个 htaccess 文件的规则? .htaccess RewriteEngine On RewriteCond ... RewriteRule ...
我正在尝试做的事情: 在我的特定项目的服务器上,我想通过 htaccess 编写 URL 重写规则(从 URL 中删除 .php 或 .html 扩展名)。 我的网站网址: http://enacte
在我的 .htaccess 文件中我已经有一些重写条件和规则,并且它工作正常。 现在我需要将“http 到 https 重定向”添加到我的 htaccess 文件中。 这是我的旧 .htaccess
注意:我写了解决方案。不管怎样,谢谢你。 :) 我知道这似乎是重复的问题:我搜索了很多,我应用了数十条重写规则,但它们不起作用。 我需要从 重定向 www.domain.com/folder1 到 w
我有一个带有 drupal 的多站点,我创建了一个站点,该站点起初应该可以通过多种方式(子域和路径)访问,但现在我只想保留其中一个;所以我应该重定向所有其他人。现在我有: aaa.domain.com
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 8年前关闭。 Improve this q
我将我的网站从/v1/etc... 目录移动到/v2/etc... 目录,并希望在 htaccess 中进行永久重定向。有人能帮我吗? 最佳答案 您可以使用 mod_rewrite : Rewrite
我想通过 .htaccess 保护文件夹。以下不起作用。它在浏览器中显示登录对话框,但看起来好像用户名和密码不匹配。当我将方法更改为 Basic 时,它运行良好。 AuthUserFile /home
任何人都可以解释以下行吗? RewriteRule ^(.*)$ /index.php/$1 [L] 最佳答案 重写规则的部分分解如下: 重写规则 表示此行将是重写规则,而不是重写条件或其他重写引擎指
我正在尝试从一个域中一个目录中的所有文件创建一个永久的 htaccess 重定向(301)到另一个域,如下所示: 重定向以下目录中的所有文件: http://www.primary.com/apple
我不是 .htaccess 的英雄,但我遇到了一个我认为可能是由它引起的问题。 第一个症状:对我的数据库的简单更改(如用户 IP 跟踪)每次请求都完成了多次,而站点的输出看起来还不错。 经过数小时的跟
我想做一个类似basecamp.com的东西:你公司的名字变成三级域名,http://mycompany.basecamp.com例如。我知道它(很可能)是在.htaccess文件和mod_rewri
我已阅读 this这对我的要求来说似乎太长了。 并尝试过 Redirect /index.php /index2.php但它不起作用(内部服务器错误) 我想要的是将我的一些 php 文件重定向到 in
如果使用此代码,则成功: Redirect 301 /products.php http://website.com.au/product_123.php 但是,如果执行此操作,则不是: Redire
我想重定向这个子域: http://abc.domain-name.com 到根域上使用相同名称的文件夹: http://www.domain-name.com/abc 这样,如果我尝试访问以下文件:
我已经在我的实时站点上设置了 htpasswd 身份验证,并且效果很好,但是当我在开发环境中工作时,我不想被要求输入密码。 在我的 httpd.conf 文件中,我有: SetEnv APP_ENV
之前 我安装了 SSL,一切运行良好!!这是我的根网络服务器 .htaccess 文件中的代码: Options +MultiViews RewriteEngine On RewriteCond %{
我要问一个非常简单的问题。当我运行我的页面时,我不希望我的链接显示这个: http://localhost/example/assets/gallery.php 我想要的是: http://local
我在 htaccess 中有说明,可以让所有请求都通过 index.php 文件。但它禁止访问文件夹和文件。因此,如果我尝试转到/uploads/products/thumbs/file.png 它会
我有一个这样的网址:https://example.com/coins/1&order_by=today以及几个类别,例如: https://example.com/coins/1&order_by=
我是一名优秀的程序员,十分优秀!