Почему перенаправление моего URL не работает? - PullRequest
2 голосов
/ 15 января 2012

Я загружаю CodeIgniter 2.1.0 и следую учебнику на CodeIgniter 2.1.0.

Проблема заключается в том, что я пытаюсь отправить форму по этому URL:

http://localhost/CodeIgniter/index.php/news/create

страница перенаправлена ​​на этот URL:

http://localhost/CodeIgniter/index.php/news/localhost/CodeIgniter/index.php/news/create

Я устал много способов изменить route.php, но он не работает.Как я могу это исправить ??

route.php

$route['news/create'] = 'news/create';
$route['news/(:any)'] = 'news/view/$1';
$route['news'] = 'news';
$route['(:any)'] = 'pages/view/$1';
$route['default_controller'] = 'pages/view';

Это код страницы формы:

public function create()
{
    $this->load->helper('form');
    $this->load->library('form_validation');

    $data['title'] = 'Create a news item';

    $this->form_validation->set_rules('title', 'Title', 'required');
    $this->form_validation->set_rules('text', 'text', 'required');

    if ($this->form_validation->run() === FALSE)
    {
        $this->load->view('templates/header', $data);   
        $this->load->view('news/create');
        $this->load->view('templates/footer');

    }
    else
    {
        $this->news_model->set_news();
        $this->load->view('news/success');
    }
}

Iобратите внимание, что при загрузке страницы формы при загрузке страницы ниже сегмента кода будет выполняться, однако, сегмент else никогда не получал изменений для выполнения.

if ($this->form_validation->run() === FALSE)
    {
        $this->load->view('templates/header', $data);   
        $this->load->view('news/create');
        $this->load->view('templates/footer');

    }

Это страница формы, ничего особенного, просто вызовитесоздать функцию, показанную выше. create.php

<h2>Create a news item</h2>

<?php echo validation_errors(); ?>

<?php echo form_open('news/create') ?>

<label for="title">Title</label> 
<input type="input" name="title" /><br />

<label for="text">Text</label>
<textarea name="text"></textarea><br />

<input type="submit" name="submit" value="Create news item" /> 

</form>

Это HTML-код страницы формы:

<html>
<head>
<title>Create a news item - CodeIgniter 2 Tutorial</title>
</head>
<body>
<h1>CodeIgniter 2 tutorial</h1><h2>Create a news item</h2>

<form action="localhost/CodeIgniter/index.php/news/create" method="post" accept-charset="utf-8">
<label for="title">Title</label> 
<input type="input" name="title" /><br />

<label for="text">Text</label>
<textarea name="text"></textarea><br />

<input type="submit" name="submit" value="Create news item" /> 

</form><strong>&copy;2012</strong>
</body>
</html>

И когда я нажимаю кнопку create new item, URL-адрес изменяется на

http://localhost/CodeIgniter/index.php/news/localhost/CodeIgniter/index.php/news/create

и страница показывает 404 Pages Not Found

Ответы [ 2 ]

6 голосов
/ 16 января 2012

Я нашел решение, оно вызвано неправильной настройкой базового URL.

Раньше мой базовый URL был: $config['base_url'] = 'localhost/CodeIgniter';

Теперь я изменил его на

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

и теперь работает нормально.

Спасибо всем, кто пытался помочь:)

0 голосов
/ 22 декабря 2012

Просто предложение, может быть, оно может вам помочь:

$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http");
$config['base_url'] .= "://".$_SERVER['HTTP_HOST'];
$config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);

Установите это в файле config.php, вы никогда не будете беспокоиться о $config['base_url'].Потому что он установит порт http или https, domain, port number (например, 8080, 8880 и т. Д.) И codeigniter root folder.Также он может быть использован в будущем в любом вашем проекте codeigniter.:)

Вы также можете проверить эту статью

...