seo frienldy url использует символ кириллицы х и всегда получает 404. Как это исправить? - PullRequest
0 голосов
/ 27 декабря 2018

У меня проблема с URL-адресами, поддерживающими Seo, в моем веб-сайте codeigniter.

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

, здесь - route.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-ар-гутал

Над URL работает правильно и отображает, что "black-shoes-ар-гутал"

Но http://localhost/safety/black-shoes-хар-гутал этот URL-адрес всегда получает 404. Если я удалюкириллический символ «х» из этого URL, поэтому он будет работать правильно.

Как я могу это исправить?

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

Это мой .htaccess.

1 Ответ

0 голосов
/ 27 декабря 2018

В файле rout.php используйте для изменения

$route['translate_uri_dashes'] = FALSE

значение

$route['translate_uri_dashes'] = TRUE;

, а также для изменения файла config.php

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

на

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

URI всегда будет декодирован по URL-адресу, и если вы хотите удалить имя контроллера из вашего URL-адреса, используйте это

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

, если ваши методы подчеркнуты как

 "function method_name(){
    #yourcode
}" 

чем использовать это

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

, если я надеюсь, что весь мой приведенный выше пример поможет вам

...