Codeigniter htaccess增加了一个额外的正斜杠

时间:2013-02-04 22:39:26

标签: php .htaccess codeigniter

这是我目前的.htaccess:

Options +FollowSymLinks +SymLinksIfOwnerMatch
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L]

我的配置文件:

$config['base_url'] = 'http://localhost/argh/';
$config['index_page'] = '';

例如,当我点击关于我们的链接时,它看起来像这样:

http://localhost/argh//about

(argh和about之间的2个正斜线)

有什么建议吗? :)

编辑:

不确定,但这看起来像Codeigniter问题,因为函数:

function site_url($uri = '')
{
    if ($uri == '')
    {
        return $this->slash_item('base_url').$this->item('index_page');
    }

    if ($this->item('enable_query_strings') == FALSE)
    {
        $suffix = ($this->item('url_suffix') == FALSE) ? '' : $this->item('url_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);
    }
}

更准确地说:

return $this->slash_item('base_url').$this->item('index_page');

在以下时间返回base_url:

$config['index_page'] = '';

这就是为什么上一个例子以这样结束的原因:

http://localhost/argh//about

4 个答案:

答案 0 :(得分:2)

检查你是不是在写:

base_url().'/about'

在您的查询中 - base_url()将使用配置文件中的/

另外,删除第二个。从这一行:

RewriteRule ^(.*)$ ./index.php/$1 [L]

阅读:

RewriteRule ^(.*)$ /index.php/$1 [L]

答案 1 :(得分:0)

在.htaccess文件中使用

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

将此用作基本网址

$config['base_url'] = 'http://'.$_SERVER['SERVER_NAME'].'/argh';

并使用路径作为表单操作

<form method="post" action="<?php echo base_url();?>Your_Controller_Name">;

for href使用此

<a href="<?php echo site_url("Controller_Name/Action_name"); ?>">About Us</a>

答案 2 :(得分:0)

在系统中更改此内容 - &gt; url_helper.php文件

rtrim($CI->config->site_url($uri),'/');

答案 3 :(得分:0)

以防万一将来有人遇到相同的问题:

由于重定向的方式,我遇到了同样的问题,例如,成功登录后,即使删除了 header("Location:".site_url()."/admin/home"); ,我仍然使用了 index.php 来自 $config['index_page']='' 的我一直得到 http://example.com//admin/home

解决方案: 使用CI提供的 redirect() 功能,而不使用 header('');

更改:从 header("Location:".site_url()."/admin/home"); 更改为 redirect('/admin/home')