Codeigniter URI字符串|如果不等于一个字母,如何显示404

时间:2011-12-06 13:10:34

标签: php codeigniter codeigniter-routing

我正在为我的网站创建一个词汇表,该词汇表将显示我网站上的术语定义。

我把一切都搞定了。但我想显示404,如果我的uri段3包含除字母表中的字母以外的任何内容

我的词汇表网址目前看起来像:

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();
            }
        }

如何让上述代码工作?

如果第3个uri段不等于a和z之间的字母

,则显示404

3 个答案:

答案 0 :(得分:4)

你可以尝试这个(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

答案 1 :(得分:0)

您可以使用“Routing

处理此问题

另外考虑301重定向而不是404,可能有助于SEO。

HTH。

答案 2 :(得分:0)

我不使用PHP,但不是|| OR运算符?你需要一个AND运算符。