web-dev-qa-db-ja.com

CodeIgniterによるリダイレクト

リダイレクトヘルパーが期待どおりに動作しない理由を教えてください。メインコントローラーのインデックスメソッドにリダイレクトしようとしていますが、www.mysite.com/index/provider1/にルーティングする必要がある場合、www.mysite.com/provider1が必要です。これは誰にとっても意味がありますか?私はそれが問題だとは思わないが、私は設定に空白に設定されたインデックスページを持っています。この問題を修正する方法についてアドバイスはありますか?前もって感謝します!

コントローラー

if($provider == '') {
    redirect('/index/provider1/', 'location');
}

。htaccess

RewriteEngine on

RewriteCond %{REQUEST_URI} !^(index\.php|files|images|js|css|robots\.txt|favicon\.ico)

RewriteCond %{HTTP_Host} ^mysite.com/ttnf/
RewriteRule (.*) http://www.mysite.com/ttnf/$1 [R=301,L]

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

php_flag display_errors On
58
ocergynohtna

リダイレクト()

URLヘルパー


このステートメントは、次の方法でロードされるURLヘルパーにあります。

$this->load->helper('url');

リダイレクト関数は、関数呼び出しの最初のパラメーターで指定され、構成ファイルで指定されたオプションを使用して構築されたローカルURIをロードします。

2番目のパラメーターを使用すると、開発者はさまざまなHTTPコマンドを使用して、リダイレクトの「ロケーション」または「リフレッシュ」を実行できます。

Code Igniterのドキュメントによると、「ロケーションは高速ですが、Windowsサーバーでは問題になる場合があります。」

例:

if ($user_logged_in === FALSE)
{
     redirect('/account/login', 'refresh');
}
143
Jon Winstanley

ディレクトリ構造がこのような場合、

site
  application
         controller
                folder_1
                   first_controller.php
                   second_controller.php
                folder_2
                   first_controller.php
                   second_controller.php

そして、あなたが作業している同じコントローラでそれをリダイレクトしようとするとき、次のコードを書くだけです。

 $this->load->helper('url');
    if ($some_value === FALSE/TRUE) //You may give 0/1 as well,its up to your logic
    {
         redirect('same_controller/method', 'refresh');
    }

また、別のコントロールにリダイレクトする場合は、次のコードを使用します。

$this->load->helper('url');
if ($some_value === FALSE/TRUE) //You may give 0/1 as well,its up to your logic
{
     redirect('folder_name/any_controller_name/method', 'refresh');
}
4
Raham

最初に、このタイプのようなURLヘルパーをロードする必要があります。または、autoload.phpファイル内でアップロードできます。

$this->load->helper('url');

if (!$user_logged_in)
{
  redirect('/account/login', 'refresh');
}
3

前の場所または最後のリクエストをリダイレクトする場合は、user_agentライブラリを含める必要があります。

$this->load->library('user_agent');

そして、あなたが使用している関数で最後に使用します:

redirect($this->agent->referrer());

私のために働いています。

3
Md Safiul Alam

インデックスファイルを非表示にする.htaccessファイルを次に示します。

#RewriteEngine on
#RewriteCond $1 !^(index\.php|images|robots\.txt)
#RewriteRule ^(.*)$ /index.php/$1 [L]

<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /

        # Removes index.php from ExpressionEngine URLs
        RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
        RewriteCond %{REQUEST_URI} !/system/.* [NC]
        RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]

        # Directs all EE web requests through the site index file
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
1