使用get方法

时间:2015-06-19 04:19:02

标签: php codeigniter

在我的codeigniter application / helper / MY_url_helper 我希望能够添加'?&route=' . $uri我希望能够在index.php之后使用我的'?&route='但在第一个文件夹/功能之前。

但每次点击我的链接时,网址都会改变,但页面保持不变?

问题:在我的帮助器上,我如何添加'?&route=' . $uri但仍然可以重定向到页面 目前每次即使我点击链接网址更改但页面保持不变?

redirect('common/dashboard');

网址http://localhost/project/admin/?&route=common/dashboard

我已尝试过路线和同样的问题。

<?php

if ( ! function_exists('redirect'))
{
function redirect($uri = '', $method = 'auto', $code = NULL)
{
    //if ( ! preg_match('#^(\w+:)?//#i', $uri))
    //{
        $uri = site_url('?&route=' . $uri);
    //}

    // IIS environment likely? Use 'refresh' for better compatibility
    if ($method === 'auto' && isset($_SERVER['SERVER_SOFTWARE']) && strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') !== FALSE)
    {
        $method = 'refresh';
    }
    elseif ($method !== 'refresh' && (empty($code) OR ! is_numeric($code)))
    {
        if (isset($_SERVER['SERVER_PROTOCOL'], $_SERVER['REQUEST_METHOD']) && $_SERVER['SERVER_PROTOCOL'] === 'HTTP/1.1')
        {
            $code = ($_SERVER['REQUEST_METHOD'] !== 'GET')
                ? 303   // reference: http://en.wikipedia.org/wiki/Post/Redirect/Get
                : 307;
        }
        else
        {
            $code = 302;
        }
    }

    switch ($method)
    {
        case 'refresh':
            header('Refresh:0;url='.$uri);
            break;
        default:
            header('Location: '.$uri, TRUE, $code);
            break;
    }
    exit;
}
}

.htaccess

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

更新:

使用3

的Codeigniter版本

在我的配置中,我现在使用

尝试

$config['uri_protocol'] = 'REQUEST_URI';

$config['uri_protocol'] = 'QUERY_STRING';

但是现在说找不到页面?

Page就在那里。

&#34;普通&#34; 将是文件夹

&#34;仪表板&#34; 将成为控制器

所有控制器的首字母为大写Dashboard.php

注意:我已经尝试在config.php上 启用查询字符串 但是我的工作方式不正常。

1 个答案:

答案 0 :(得分:0)

我必须做的第一步就是

在routes.php中

$get_route_method = 'route=';
$route[$get_route_method . 'common/dashboard'] = "common/dashboard/index";

当我在application / config / route.php中手动添加路由时,似乎工作正常

然后在application / helper.php $uri = site_url('index.php?route=' . $uri);

中的MY_url_helper中
<?php

if ( ! function_exists('redirect'))
{
function redirect($uri = '', $method = 'auto', $code = NULL)
{
    if ( ! preg_match('#^(\w+:)?//#i', $uri))
    {
        $uri = site_url('index.php?route=' . $uri);
    }

    // IIS environment likely? Use 'refresh' for better compatibility
    if ($method === 'auto' && isset($_SERVER['SERVER_SOFTWARE']) && strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') !== FALSE)
    {
        $method = 'refresh';
    }
    elseif ($method !== 'refresh' && (empty($code) OR ! is_numeric($code)))
    {
        if (isset($_SERVER['SERVER_PROTOCOL'], $_SERVER['REQUEST_METHOD']) && $_SERVER['SERVER_PROTOCOL'] === 'HTTP/1.1')
        {
            $code = ($_SERVER['REQUEST_METHOD'] !== 'GET')
                ? 303   // reference: http://en.wikipedia.org/wiki/Post/Redirect/Get
                : 307;
        }
        else
        {
            $code = 302;
        }
    }

    switch ($method)
    {
        case 'refresh':
            header('Refresh:0;url='.$uri);
            break;
        default:
            header('Location: '.$uri, TRUE, $code);
            break;
    }
    exit;
}
}