【问题标题】:CodeIgniter htaccess redirect url issuesCodeIgniter htaccess 重定向 url 问题
【发布时间】:2016-07-02 14:21:20
【问题描述】:

我想为我的网站提供“漂亮的网址”。我正在考虑使用.htaccess,我已经尝试了很多版本。

现在我有了这个:

IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
# !IMPORTANT! Set your RewriteBase here and don't forget trailing and leading
#  slashes.
# If your page resides at
#  http://www.example.com/mypage/test1
# then use
# RewriteBase /mysite
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
 # If we don't have mod_rewrite installed, all 404's
 # can be sent to index.php, and everything works as normal.
# Submitted by: ElliotHaughin

ErrorDocument 404 /index.php
</IfModule>

所以这会从 URL 中删除 index.php。一开始还可以,但是

这是我的config.php

$config['base_url'] = 'localhost/mysite/';
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';

我的 .htaccess 文件位于我的应用根目录中。 folder img

我需要登录管理页面,所以localhost/mysite/admin 是我的管理网站网址。

public function index()
    {
    //  $this->session->unset_userdata('logged_in'); session_destroy();
        $data['sitename']="Varkocs Old Pub";
         if($this->session->userdata('logged_in'))
           {
             $session_data = $this->session->userdata('logged_in');
             $data['username'] = $session_data['username'];
             $this->load->view('admin/home_view', $data);
       }
       else
       {
         //If no session, redirect to login page
         //redirect('login', 'refresh');


            $this->load->helper(array('form', 'url'));

            $this->load->view('admin/login',$data);
       }

}
public function logout()
 {
   $this->session->unset_userdata('logged_in');
   session_destroy();
   redirect('', 'refresh');
 }

这是我的管理员控制器。我在这里尝试如果登录我加载home_view,否则login 视图。

<div id="" class="container-fluid ">
    <div id="" class="row">
        <div id="" class="col-md-4 text-center admin_container">

          <h2><?php echo $sitename;?><h4>belépés az admin felületre</h4></h2>

           <?php  echo validation_errors('<p class="bg-danger">','</p>');?>

           <form action="verifylogin" method="post" accept-charset="utf-8">
            <div class="form-group">
             <label for="username">Username:</label>
             <input class="form-control" placeholder="" type="text" size="20" id="username" name="username"/>
            </div>
            <div class="form-group">
             <label for="password">Password:</label>
             <input class="form-control" placeholder="password" type="password" size="20" id="passowrd" name="password"/>
            </div>
             <input class="btn btn-warning btn-lg btn-block" type="submit" value="Login"/>
           </form>
        </div>
    </div>

这是登录视图。我不能在这里使用:

echo form_open('verifylogin');

因为它返回了错误的 URL。

所以我写 HTML:

<form action="verifylogin" method="post" accept-charset="utf-8">

使用 CodeIgniter 的表单验证正在工作。但是之后的重定向不起作用。

  $this->load->helper(array('form', 'url'));
   if($this->form_validation->run() == FALSE)
   {
     //Field validation failed.  User redirected to login page
    $data['sitename']="Varkocs Old Pub";

     $this->load->view('admin/login',$data);

   }
   else
   {
     //Go to private area
     redirect('admin', 'refresh');

     }

我尝试了很多方法来解决这个问题,但都失败了。

【问题讨论】:

    标签: php .htaccess codeigniter redirect url-rewriting


    【解决方案1】:

    Codeigniter 文档中关于重定向功能的说明如下:

    In order for this function to work it must be used before anything is outputted to the 
    browser since it utilizes server headers.
    

    这条规则可能很难遵循。开始 PHP 标记之前的空格或行结束符已经破坏了它。

    【讨论】:

    • 我的问题是重定向。 //转到私人区域 redirect('admin', 'refresh'); localhost/mysite/localhost/mysite/admin 我设置了基本 url:localhost/mysite,我想去 localhost/mysite/admin 控制器。我该怎么办?
    • 抱歉,当您说它不起作用时,我以为重定向给出了一个空白页。如果它导致错误的页面,您可能需要将您的 base_url 调整为绝对 url:$config['base_url'] = 'http://localhost/mysite/';
    猜你喜欢
    • 2015-04-15
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 2012-11-09
    • 2014-05-29
    • 2021-07-06
    相关资源
    最近更新 更多