リダイレクトヘルパーが期待どおりに動作しない理由を教えてください。メインコントローラーのインデックスメソッドにリダイレクトしようとしていますが、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
このステートメントは、次の方法でロードされるURLヘルパーにあります。
$this->load->helper('url');
リダイレクト関数は、関数呼び出しの最初のパラメーターで指定され、構成ファイルで指定されたオプションを使用して構築されたローカルURIをロードします。
2番目のパラメーターを使用すると、開発者はさまざまなHTTPコマンドを使用して、リダイレクトの「ロケーション」または「リフレッシュ」を実行できます。
Code Igniterのドキュメントによると、「ロケーションは高速ですが、Windowsサーバーでは問題になる場合があります。」
例:
if ($user_logged_in === FALSE)
{
redirect('/account/login', 'refresh');
}
ディレクトリ構造がこのような場合、
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');
}
最初に、このタイプのようなURLヘルパーをロードする必要があります。または、autoload.phpファイル内でアップロードできます。
$this->load->helper('url');
if (!$user_logged_in)
{
redirect('/account/login', 'refresh');
}
前の場所または最後のリクエストをリダイレクトする場合は、user_agent
ライブラリを含める必要があります。
$this->load->library('user_agent');
そして、あなたが使用している関数で最後に使用します:
redirect($this->agent->referrer());
私のために働いています。
インデックスファイルを非表示にする.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>