検索
ホームページバックエンド開発PHPチュートリアルCI フレームワーク .htaccess が URL 内のindex.php を隠す問題の解決策

CodeIgniter (以下、「CI」と呼びます) は、優れた外国の PHP 軽量 MVC フレームワークであり、PHP4 と PHP5 をサポートし、高いスケーラビリティ要件を持つ小規模および中規模の Web アプリケーションを開発するための強力なツールです。これまで見てきたブログのプログラムは CI を使用して書かれています。

MVC アーキテクチャの考え方に従い、CI 内のすべてのコントローラーは、シングル ポイント エントリ ファイルindex.php (デフォルト) を介してロードされ、呼び出される必要があります。つまり、デフォルトでは、すべての CI 開発プロジェクトの URL は次の形式になります。

http://localhost/index.php/blog/logs/this_is_a_test_entry

明らかに、デフォルトでは、index が存在します。 URL アドレス部分の php は、URL の簡潔さと SEO の進行にある程度影響します。この記事で紹介した方法で、この厄介なIndex.phpを削除することができます。

CodeIgniter ユーザー マニュアルにこの問題の解決策があることに気づいたかもしれません。ただし、公式に提供されている .htaccess 構成では常に問題が解決されるわけではありません。この記事では、より完全な解決策を提供します。

注: 続行する前に、ホストが .htaccess 構成をサポートしていることを確認してください。このうち、Apache を Web サーバーとして使用する場合は、mod_rewrite モジュールのサポートを有効にする必要があります。IIS を Web サーバーとして使用する場合は、追加の ISAPI_Rewrite 拡張機能をインストールする必要があります。

具体的な方法は以下の通りです。

1. 以下の設定情報をコピーし、.htaccess ファイルとして保存します。

以下は .htaccess ファイルの情報です
1 2 3 4 5 6 7 8 9 10 11 12 13 14

RewriteEngineOn

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule^(.*)$ /index.php?/$1 [L]

#mod_rewrite モジュールがインストールされていない場合、404 ページすべてが #インデックスに送信されます。 php, このとき、プログラムは非表示が設定されていないものとして実行されます。 ErrorDocument404 /index.php

2. 上記の .htaccess ファイルを、CI が配置されているプロジェクトのルート ディレクトリにアップロードします (つまり、index.php と同じレベルのディレクトリ (Down)

3. application/config.php 内の次のパラメータを変更します:

1 $config['index_page'] = "index.php";

1

上記の 3 つのステップは必須です。すべてが正常に構成されている場合、プログラムを再度実行すると、プログラムが自動的にindex.php URLセグメントを非表示にしていることがわかります。

Trackback(UTF-8): http://www.cnSaturn.com/trackback/40



CodeIgniterでPATH_INFOがオンになっているときにmod_rewriteがindex.phpを隠す問題。

CodeIgniter で、URI アドレッシング モードを AUTO から PATH_INFO に変更すると、次のようになります。

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

注: $_GET を渡したいため、PATH_INFO がオンになります。システムのデフォルトの POST メソッドの代わりに値を取得します。

この場合、上記の .htaccess ソリューションを引き続き使用すると、結果は次のようになります。index.php は正常に非表示になりましたが、メイン コントローラーは値を正しく取得できません。

解決策は次のとおりです。たった 1 ステップです:

次の書き換えルールで、index.php の後の疑問符を削除するだけです。

RewriteRule^(.*)$ /index.php?/$1[L]

変更されたルールは次のとおりです:

RewriteRule^(.*)$ /index.php/$1 [L]

その他の場所は変更ありません。 ============================================ ================================================= ==============


[その他]

ウェブサイト開発フレームワーク CodeIgniter の URL を教えてください

index.php ファイルの削除方法

推定 CodeIgniter を学習するときに多くの人が実行したい最初のステップは、index.php を削除する方法です。この公式マニュアルには、.htaccess ファイルの変更方法に関する関連チュートリアルが含まれています (サーバーが Apache である場合)。 RewriteCond $1 !^(index.php|images|robots.txt)

RewriteRule ^(.*)$ /index.php/$1 [L]

もちろん、多くの人が必要に応じて修正していますが、エラーが発生しています、すべての訪問 それはすべて 404 であり、この 404 は Apache の 404 ページであり、CodeIgniter の 404 エラー ページではありません。

この種の問題は、Apache の書き換えルールを理解していないために発生します。

最初の行では、RewriteEngine エンジンをオンに設定します。これは、URL の書き換えを有効にします。

2 行目では、 URL 書き換えルール,!^ (index.php|images|robots.txt) この正規表現は、書き換える必要はないが直接アクセスされるファイルを示します

3 行目の ^(.*)$ は正規表現です。これは、すべてのリクエストが /index.php/$1 に送信されることを意味します。URL に詳しい人なら、バックスラッシュ (/) で始まるものは相対パスであることを知っています。ルートは URL です。

そのため、CodeIgniter が Web サイトのルートディレクトリにインストールされていない場合、必然的にエラーが発生します。これを解決するにはどうすればよいでしょうか? 対応する解決策は CodeIgniter マニュアルにも記載されています:

上記の最後の文を次のように変更します: RewriteRule ^(.*)$index.php/$1 [L]
  • index.php の前を削除するだけです。スラッシュで十分です。
  • URL サフィックスを追加する方法
  • 以上の手順で、index.php を非表示にすることができました。これで、ほとんどの人は、あなたの Web サイトが CodeIgniter で開発されたものであるか、ROR で開発されたものであるか区別できなくなります。 。

    しかし、URL の後にサフィックスを追加するにはどうすればよいでしょうか? この方法では、config/config.php ファイルを変更することで、生成された URL に指定したファイルのサフィックスを追加することもできます。たとえば、.html を追加できる場合は、.asp、.jsp も追加できます。

    このようにして、 http://www.hualai.net.cn/index.php/news/view/about を http://www.hualai.net.cn/index.php/news/view/ about に変更できます。 .html。

    クエリ文字列の使用方法

    通常、クエリ文字列を使用する必要はありませんが、CodeIgniter のレスト モードを使用して実現できない特殊なケースが常に存在するため、URL でクエリ文字列を使用する必要があります。

    index.php?c=products&m=view&id=345

    CodeIgniter この機能はデフォルトではオフになっています。オンにしたい場合は、設定ファイル application/config/config.php を開くと、次の内容が表示されます。

    $config ['enable_query_strings'] = FALSE;

    $config['controller_trigger'] = 'c'; //コントローラー名

    $config['function_trigger'] = 'm'; $config[ 'directory_trigger']='d'; //コントローラーが配置されているサブディレクトリの名前

    enable_query_strings を TRUE に変更すると、この関数が有効になります。この時点で、キーワードを通じて必要なコントローラーとメソッドを呼び出すことができます:

    index.php?c=controller&m=method

    これは、CodeIgniter を使用してページネーションを作成するときに便利です。

    $config['index_page'] = ""; //空に設定します
    声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    PHPセッションを失敗させる可能性のあるいくつかの一般的な問題は何ですか?PHPセッションを失敗させる可能性のあるいくつかの一般的な問題は何ですか?Apr 25, 2025 am 12:16 AM

    PHPSESSIONの障害の理由には、構成エラー、Cookieの問題、セッションの有効期限が含まれます。 1。構成エラー:正しいセッションをチェックして設定します。save_path。 2.Cookieの問題:Cookieが正しく設定されていることを確認してください。 3.セッションの有効期限:セッションを調整してください。GC_MAXLIFETIME値はセッション時間を延長します。

    PHPでセッション関連の問題をどのようにデバッグしますか?PHPでセッション関連の問題をどのようにデバッグしますか?Apr 25, 2025 am 12:12 AM

    PHPでセッションの問題をデバッグする方法は次のとおりです。1。セッションが正しく開始されるかどうかを確認します。 2.セッションIDの配信を確認します。 3.セッションデータのストレージと読み取りを確認します。 4.サーバーの構成を確認します。セッションIDとデータを出力し、セッションファイルのコンテンツを表示するなど、セッション関連の問題を効果的に診断して解決できます。

    session_start()が複数回呼び出されるとどうなりますか?session_start()が複数回呼び出されるとどうなりますか?Apr 25, 2025 am 12:06 AM

    session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

    PHPでセッションのライフタイムをどのように構成しますか?PHPでセッションのライフタイムをどのように構成しますか?Apr 25, 2025 am 12:05 AM

    PHPでのセッションライフサイクルの構成は、session.gc_maxlifetimeとsession.cookie_lifetimeを設定することで達成できます。 1)session.gc_maxlifetimeサーバー側のセッションデータのサバイバル時間を制御します。 0に設定すると、ブラウザが閉じているとCookieが期限切れになります。

    セッションを保存するためにデータベースを使用することの利点は何ですか?セッションを保存するためにデータベースを使用することの利点は何ですか?Apr 24, 2025 am 12:16 AM

    データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

    PHPでカスタムセッション処理をどのように実装しますか?PHPでカスタムセッション処理をどのように実装しますか?Apr 24, 2025 am 12:16 AM

    PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

    セッションIDとは何ですか?セッションIDとは何ですか?Apr 24, 2025 am 12:13 AM

    SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

    ステートレス環境(APIなど)でセッションをどのように処理しますか?ステートレス環境(APIなど)でセッションをどのように処理しますか?Apr 24, 2025 am 12:12 AM

    APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。

    See all articles

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    Video Face Swap

    Video Face Swap

    完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

    ホットツール

    SublimeText3 Linux 新バージョン

    SublimeText3 Linux 新バージョン

    SublimeText3 Linux 最新バージョン

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    AtomエディタMac版ダウンロード

    AtomエディタMac版ダウンロード

    最も人気のあるオープンソースエディター

    EditPlus 中国語クラック版

    EditPlus 中国語クラック版

    サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境