seo 友好的 url 使用西里尔字符 х 字符,它总是得到 404。如何修复它?

Posted

技术标签:

【中文标题】seo 友好的 url 使用西里尔字符 х 字符,它总是得到 404。如何修复它?【英文标题】:seo frienldy url is using cyrillic х character and it is always getting 404. How to fix it? 【发布时间】:2019-05-25 11:45:19 【问题描述】:

我的 codeigniter web 中存在 Seo 友好 URL 问题。

$route['(:any)'] = 'main/change_route/$1';

这里是配置文件夹中的 routes.php。任何请求都必须调用主类的change_route方法。

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class main extends CI_Controller 
    public function change_route($url='')
    
        die(urldecode($url));
    

这是我的控制器,它只显示请求 URL。

所以我的问题就在这里。 http://localhost/safety/black-shoes-ар-гутал

以上网址工作正常并显示“black-shoes-ар-гутал”

但是http://localhost/safety/black-shoes-хар-гутал 这个网址总是得到 404。如果我要从这个网址中删除西里尔字母 'х' 字符,它就会正常工作。

我该如何解决?

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

这是我的 .htaccess 。

【问题讨论】:

• 也许这有帮助:***.com/a/11172396/2412335 【参考方案1】:

在 routes.php 文件中,使用 change

$route['translate_uri_dashes'] = FALSE

这个给

$route['translate_uri_dashes'] = TRUE;

还有在你的 config.php 文件中修改

$config['uri_protocol'] = 'REQUEST_URI';

$config['uri_protocol'] = 'PATH_INFO';

uri 将始终是 url-decoded 如果你想从你的 url 中删除控制器名称,请使用这个

$route['^(method1 | method2 | method3)(/:any)?$'] = "controllerName/$0";

如果你的方法有像

这样的下划线
 "function method_name()
    #yourcode
" 

比用这个

$route['method-name'] ='controllerName/method_name';

如果我希望以上所有示例对您有所帮助

【讨论】:

以上是关于seo 友好的 url 使用西里尔字符 х 字符,它总是得到 404。如何修复它?的主要内容,如果未能解决你的问题,请参考以下文章

PHP 将字符串转换为孟加拉语语言类型的 SEO 友好 URL

如何从字符串创建 SEO 友好的破折号分隔 url?

生成 SEO 友好的 URL(slug)[关闭]

友好网址中的西里尔字符问题

带有 UTF8 字符的友好 URL

如何制作seo友好的AMP页面查询字符串