【问题标题】:use utf 8 in url, codeigniter ,seo在 url、codeigniter、seo 中使用 utf 8
【发布时间】:2015-01-19 20:30:55
【问题描述】:
我正在建立一个网站,我想在 url 中使用 utf 8 个字符,我查看了一些地方,但我没有得到我需要的答案,所以我对此没有什么问题。
我正在使用 codeigniter,我正在构建的网站有一篇文章我想在 url 中发送文章标题(不是英文)
domain.com/ctrl/articles/articleTitle(非英文)
- 如果我的访问者不是用英语进行搜索,SEO 是否可以使用这种类型的 URL?
- 我该怎么做?
谢谢大家的回答。
【问题讨论】:
-
-
在这里寻求 SEO 建议是题外话。你可能想edit你的问题,只问如何实现它。
标签:
php
codeigniter
url
utf-8
【解决方案1】:
如果你把这一行放在你的控制器构造函数中,它会强制所有内容都是 utf-8
class Article extends CI_Controller {
function __construct() {
parent::__construct();
// set all to utf-8
$this->output->set_header('Content-Type: text/html; charset=utf-8');
}
// controller methods etc
链接将在您的视图文件中输出——这确保您的所有文本(包括链接)都将以 utf-8 编码输出。另一方面是codeigniter默认情况下不允许在url中使用的字符——在application/config/config.php中检查
$config['permitted_uri_chars']
【解决方案2】:
这里的问题不在于 SEO。谷歌不会对 url 中的 utf8 字符挑剔,因为与非常旧的浏览器存在兼容性问题。
如果您在谈论例如只有几个额外字符的斯堪的纳维亚语言,谷歌足够聪明地转换搜索词,例如其中包含 'bär' 以匹配名为 'bar' 的页面,反之亦然。因此,对于这种类型的语言,可能不值得将 utf8 字符放入 url 中。但是,如果您在谈论中文或其他内容,那么这里有一种方法。
问题在于 codeigniter 使用 url 来确定要执行的类和函数,这仅限于 php5 中的 a-zA-Z_ (我认为)。这家伙说这不是一件容易的事,但详细说明了一种似乎有效的方法。
https://ellislab.com/forums/viewthread/146840/#717001
您可以通过将 UTF-8 字符输入到
config.php 中的 allowed_chars_list 然后为您的 Foreign 设置路由
URL 段,或通过修补路由器以将 UTF-8 字符转换为
也许他们最近的 a-z 字符?
基本上重写了 utf8 url,以便它们在内部被翻译成普通字符,以便找到正确的函数。