4

这是我当前的 .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

5 回答 5

2

检查你没有写:

base_url().'/about'

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

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

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

读书:

RewriteRule ^(.*)$ /index.php/$1 [L]
于 2013-02-04T22:53:54.543 回答
0

在系统中更改它-> url_helper.php 文件

rtrim($CI->config->site_url($uri),'/');
于 2014-02-10T15:04:16.713 回答
0

在 .htacces 文件中使用它

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">;

对于href使用这个

<a href="<?php echo site_url("Controller_Name/Action_name"); ?>">About Us</a>
于 2013-02-15T07:21:17.170 回答
0

以防将来有人面临同样的问题:

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

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

改变:header("Location:".site_url()."/admin/home");redirect('/admin/home')

于 2019-01-24T09:44:37.210 回答
0

这项工作

<a href="<?php echo site_url('Controller_Name') ?>" </a> change to <a href="#" onclick="window.location='<?php echo site_url('Controller_Name'); ?>'"></a>

于 2022-02-08T06:04:47.637 回答