Codeigniter URI-строки |Как показать 404 если не равно букве - PullRequest
0 голосов
/ 06 декабря 2011

Я создаю глоссарий для своего сайта, в котором будут отображаться определения терминов на моем сайте.

У меня все работает. Но я бы хотел показать 404, если мой сегмент uri 3 содержит что-то кроме букв в алфавите .

Мои URL-адреса глоссария в настоящее время выглядят так:

www.mydomain.com/tools/glossary/a
www.mydomain.com/tools/glossary/b
www.mydomain.com/tools/glossary/c
...

Я хочу показать 404, если пользователь вводит строку, которая не находится в алфавите:

пример

www.mydomain.com/tools/glossary/tree

В своей функции глоссария я добавил следующее:

        if($this->uri->segment(3)) {
            if($this->uri->segment(3) !== 'a' || 'b' || 'c' .... 'z') {
                show_404();
            }
        }

Как мне заставить работать приведенный выше код ??

Показать 404, если 3-й сегмент uri не равен букве между a и z ??

Ответы [ 3 ]

4 голосов
/ 06 декабря 2011

Вы можете попробовать это (controller tools.php)

  function glossary($letter)  
  {
   if(!preg_match('/^[a-z]$/',$letter))
    {
       show_404();
    }
    else
    {
      echo 'match';
      //do something with $letter
    }
   }

Тесты:

a  'match'
b  'match'
ab  404
1   404
0 голосов
/ 06 декабря 2011

Я не использую PHP, но не ||оператор ИЛИ?Вам нужен оператор AND там.

0 голосов
/ 06 декабря 2011

Вы можете справиться с этим, используя " Routing "

Также рассмотрите редирект 301 вместо 404, может помочь с SEO.

НТН.

...