【问题标题】:End my urls with trailing slash (/) or not? And how do I go about it doing this with codeigniter是否用斜杠 (/) 结束我的网址?以及如何使用 codeigniter 执行此操作
【发布时间】:2011-01-24 07:43:09
【问题描述】:

我正在尝试找出最合适的方法。从我读过的文章来看,似乎最好以斜杠结尾。

所以,而不是: http://example.url/article

它会这样写: http://example.url/article/

首先我调整了我的 htaccess 以强制使用斜杠。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI}      ^.+[^/]$
RewriteRule ^(.+)$              $1/   

然后我开始在我的链接中实现这个,我想如果我这样做 anchor('article/','article') 会起作用,但似乎这个函数去掉了尾部斜杠。

为了解决这个问题,我将配置文件更改为 $config['url_suffix'] = '/'。 大部分效果很好 - 除了我的网站上有一个带有 pdf 等的文档区域。所以在那里创建的链接会变成 http://example.url/documents/doc1.pdf/ 。这当然行不通。

您认为我的解决方案是什么?我想我可以回到我引用文档或文件的任何页面并调整它们以不使用锚功能,但我觉得应该有更简单的方法。

【问题讨论】:

    标签: php apache codeigniter


    【解决方案1】:

    很抱歉,这可能是粗鲁的,但如果它不起作用(或导致问题),那就不要这样做,你很好。为这种事情添加额外的代码是浪费时间。一些浏览器会自动添加斜线,为什么要担心呢?真的没关系。

    【讨论】:

    • 我同意,它的额外代码,通过强制更多规范导致您的系统不那么可靠..为了什么?一致性?但仅适用于您的网站,人们可能会将其与其他网站混淆,而其他网站的做法不同。
    • 我已经读到搜索引擎以不同的方式查看“page/”和“page”。所以我想让我的所有链接成为优化网站的一种方式。
    • @Roeland 我相信他们对它们的看法不同,因为我已经在我的回答中说明了用户如何看待它们。您可以向 Google 查询,他们非常清楚地表明,如果您想优化,那么您需要为用户构建最适合您的网站。
    • @Roeland ps,根据谷歌搜索中的随机链接,MSN 和 Y!自动去除尾部斜杠和 G 索引(以给定为准)。但他们确实声明,从技术上讲,没有斜线被视为资源,而斜线被视为目录,这基本上是对我所说的内容的改写。
    • 有道理..有趣的是它被一些人自动剥离。
    【解决方案2】:

    我的网站两者都使用。我认为,尾部的斜杠表示特定于用户的内容。由于“/”通常表示一个文件夹,因此用户(尤其是技术人员)认为这意味着该页面有子文件夹或子参数。不向用户显示斜线可能表示没有子文件夹。这适用于文件之类的东西,例如您的 pdf 文件。

    因此,我选择不强迫任何一方,而是以反映用户看法的方式构建我的网站。但这是一个哲学问题,你为用户而不是代码建立一个网站,对吧? :-)

    【讨论】:

      【解决方案3】:

      Config.php 覆盖 site_url() 以添加尾部斜杠,链接到文件时除外:

      application/core/MY_Config.php:

      <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
      
      class MY_Config extends CI_Config {
      
          function site_url($uri = '')
          {   
              if ($uri == '')
              {
                  return $this->slash_item('base_url').$this->item('index_page');
              }
      
              if ($this->item('enable_query_strings') == FALSE)
              {
                  $suffix = '';
                  if( ! preg_match('/(.+)\.[a-zA-Z0-9]{2,4}$/', $uri))
                  {
                      $suffix = '/';              
                  }
                  return $this->slash_item('base_url').$this->slash_item('index_page').$this->_uri_string($uri).$suffix;              
              }
              else
              {
                  return $this->slash_item('base_url').$this->item('index_page').'?'.$this->_uri_string($uri);
              }
          }
      
      }
      // END MY_Config Class
      
      /* End of file MY_Config.php */
      /* Location: ./application/core/MY_Config.php */
      

      【讨论】:

        猜你喜欢
        • 2013-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-13
        • 1970-01-01
        相关资源
        最近更新 更多