目次
CodeIgniterフレームワーク、codeigniterフレームワークのURL(index.php)について
PHP CodeIgniter框架中怎获取当前页面的URL
怎删除CodeIgniter框架中URL段里面的indexphp,实例,手册上的木看明白,自己写了个dome测试也不对
ホームページ バックエンド開発 PHPチュートリアル CodeIgniter フレームワークの URL (index.php) に関すること、codeigniter Framework_PHP チュートリアル

CodeIgniter フレームワークの URL (index.php) に関すること、codeigniter Framework_PHP チュートリアル

Jul 13, 2016 am 10:18 AM
codeigniter index.php url について フレーム

CodeIgniterフレームワーク、codeigniterフレームワークのURL(index.php)について

最近、個人サイトを構築する際に軽量phpフレームワークCodeIgniterを使用していました。一見すると、コードは明確かつ簡潔であり、MVC モデルは保守が非常に簡単です。開発中に使用したツールは Netbeans IDE 8.0 です。もちろん、この記事の内容は開発ツールとは関係なく、最終的な Web サイトで使用されるサーバーに大きく関係します。現在最も一般的に使用されている 2 つの無料 Web サーバーは、Apache と Nginx です (これら 2 つのサーバーの比較については、インターネット上の古典的な記事 http://zyan.cc/nginx_php_v6/ を参照してください)。私の Web サイトの開発と立ち上げ中に、両方のサーバーが若干異なる方法で CodeIgniter を使用しました。次に、他の開発者が CodeIgniter フレームワークを使用する際の落とし穴を回避できるように、それらを個別に説明します。

(1) CodeIgniterについて

CodeIgniter は、迅速な Web 開発によく使用されるオープンソースの超軽量 MVC フレームワークであり、その気になれば、自分のニーズに合わせてソース コードを自由に変更することもできます。フレームワークそのものについては紹介しませんが、CodeIgniter の公式 Web サイトにアクセスしてダウンロードすることもできます。この公式 Web サイトには、初心者にとって非常に役立つ非常に詳細な中国語のヘルプ マニュアルも用意されています。ヘルプマニュアルリンク: http://codeigniter.org.cn/user_guide/toc.html。ヘルプ マニュアルでは、簡単な Web サイトを最初から構築する方法を説明します。

(2) CodeIgniterで設定したWebサイトURL

CodeIgniter によって最初に構築された Web サイトの URL は次のようになります:

http://[Webサイトアドレス]/index.php/[コントローラークラス名]/[クラス関数名]/[関数パラメータ]

例を挙げます: http://127.0.0.1/index.php/welcome/hello/zhangsan。この例では、Web サイトの URL が 127.0.0.1 であると想定されており、これは一般的に使用されるローカル アドレスです。この URL リクエストの処理には、コントローラー フォルダー内の PHP で記述された welcome.php クラスが使用されます。これを welcome と呼びます。クラスの hello 関数にはパラメータが必要です。渡すパラメータは文字列 zhangsan です。ただし、より目を引くのは、URL に固定フィールド Index.php が含まれていることです。これは非常に不快に見えます。私が望む結果は次のとおりです: http://127.0.0.1/welcome/hello/zhangsan。では、index.php を削除するにはどうすればよいでしょうか?ここが主に共有したいところです。

index.php を削除する方法について説明する前に、まず、index.php がここに表示される理由を理解しましょう。どの URL リクエストでも、CodeIgniter はまず Web サイトとディレクトリにあるindex.php ファイルによって処理され、次にこのファイルは、指定した URL 内のindex.php の後の部分に基づいてリクエストをリダイレクトするクラスを決定します。 。したがって、URL には、index.php フィールドが含まれている必要があり、まず、index.php がこの URL を、後で処理するように指定したクラスにリダイレクトするようにサーバーに明示的に指示します。設定を行わずに直接index.phpを削除すると、Webページが表示されなくなります。したがって、これを削除したい場合は、いくつかの構成オプションを通じて、サーバーがデフォルトでindex.phpを使用してURLを処理し、URLにindex.phpを表示する必要がないようにしたいと考えています。

(3) Apacheサーバーからindex.phpを削除します

私はコンピューターで開発するときに Apache サーバーを使用するため、最初に Apache サーバーでこの問題を解決することは避けられません。実際、記事の冒頭で述べた CodeIgniter 公式ヘルプ マニュアルでは、Apache での解決策はすでに提供されていますが、Nginx での解決策は提供されていません。それもそのはず、Apacheサーバーのシェアは6割を超えていると言われており、これほど主流のサーバーとしては、公式マニュアルにその設定方法が記載されている必要があります。わかりやすくするために、さらに詳しく説明しましょう。

Web サイトのルート ディレクトリ (つまり、前述の Index.php と同じディレクトリ) に、.htaccess という名前の新しいファイルを作成します。 htaccess の前にドットがあることを忘れないように注意してください。このファイルをメモ帳で開き、次のコマンドを記述します:

リーリー

英語の Rewrite を見れば、それが推測できるでしょう。実際、このファイルは URL の書き換えルールを制御します。 .htaccess ファイルの特定の書き換えルールとあらゆる種類の構文は別の主題であるため、ここでは詳しく説明しません。私たちが気にするのは、上記の文の意味だけです。

最初の文 RewriteEngine on: 翻訳すると「書き換えエンジンがオン」となり、URL 書き換えメカニズムを開始するのと同じです。

2文目 RewriteCond %{REQUEST_FILENAME} !-f: 「書き換え条件要求ファイル名はファイルではありません」と訳されます。最後の文字 f はファイルとして理解され、!-f の感嘆符は否定を意味し、ファイルではないことを意味します。

3文目 RewriteCond %{REQUEST_FILENAME} !-d: 翻訳すると「書き換え条件リクエストのファイル名はディレクトリではありません」となります。最後の文字 d はディレクトリとして理解されます。

2 番目と 3 番目の文の目的は、URL リクエストがファイル名またはフォルダー名ではない場合にのみ書き換えルールを有効にすることです。たとえば、http://127.0.0.1/test.html を考えてみましょう。このリクエストは実際には、Web サイトのルート ディレクトリで test.html を検索するもので、見つかった場合は書き換えずにこのファイルを直接返します。ルート ディレクトリで test.html が見つからない場合にのみ、URL が書き換えられます。これは REQUEST_FILENAME がファイルである例です。別の例は http://127.0.0.1/nihao です。ここで、nihao はおそらくルート ディレクトリ内のフォルダーです (もちろん、サフィックスのないファイルである可能性もあります)。ルート ディレクトリ。そうでない場合は、URL 書き換えを有効にします。これは、REQUEST_FILENAME がディレクトリである例です。

4番目の文 RewriteCond $1 !^(index.php|images|js|css|robots.txt): 翻訳すると、「条件付きURLを書き換えた後の最初のパラメータは、index.php、images、css、js、robots.txtにすることはできません」誰でも"。たとえば、http://127.0.0.1/images/girl.png の場合、この URL の最初のパラメータは、上にリストされているものでない場合にのみ書き換えないでください。この文の目的は、一部の URL リクエストの書き換えを除外することです。これは、Web サイトの CSS ファイル、JavaScript ファイル、および画像ファイルをルート ディレクトリの CSS、JS、IMAGES フォルダーに配置し、URL を通じてそれらを参照することが多いためです。 Web ページ内 これらのリソースについては、これらのリソースの要求に使用された URL も書き換えられると、Web ページ内で参照されなくなります。実際のニーズに基づいて、除外する必要がある新しい URL 書き換え状況を追加できます。

5番目の文 RewriteRule ^(.*)$ /index.php/$1 [L]: 翻訳すると、「URLの後の最初のパラメータの前にindex.phpを追加してルールを書き換えます。」 [L] は、これが最後の書き換えルールであり、これ以上はないことを示します。

このように、ブラウザに http://127.0.0.1/hello/zhangsan と入力すると、実際には http://127.0.0.1/index.php/hello/zhangsan と同等になります。

最後に小さな落とし穴があります。つまり、ツールを使用して Web サイトを開発する場合、Web サイトのコードが Apache サーバーのルート ディレクトリにないことがよくあります。たとえば、Apache サーバーのルート ディレクトリに xxx というフォルダーを作成します。ウェブサイト全体をこのフォルダに入れると、ホームページのアドレスは http://127.0.0.1/xxx/index.php になります。このとき、上記の設定ファイルの 5 番目の文を RewriteRule ^(.*) /xxx/index.php/$1 [L] に変更する必要があります。もう 1 つの変更方法は、インデックスの前のスラッシュを直接削除することです。 php の 5 番目の文 (つまり、RewriteRule ^(.*)$index.php/$1 [L]) に注意してください。

上記の .htaccess ファイルを完成させたら、あと 2 つの作業が必要です。

まず、CodeIgniter で application/config/config.php ファイルを見つけ、index_page を null 値、つまり $config['index_page'] = '"" に設定し、base_url を Web サイトのルート ディレクトリに設定します。 Index.php はディレクトリ)、$config['base_url']="http://127.0.0.1/xxx/" にあります。実サーバーにデプロイして Web サイトをオンラインにする前に、127.0.0.1 を Web サイトの URL に変更することを忘れないでください。index.php がサーバーのルート ディレクトリにある場合は、base_url の xxx を忘れずに削除してください。

次に、Apache 設定ファイル (conf/httpd.conf ファイル) を見つけて、LoadModule rewrite_module modules/mod_rewrite.so の前にある # 記号が削除されていることを確認します。次に、キーワードで htaccess を検索し、.htaccess を構成する部分を見つけます。その設定を「AllowOverride All」に変更する必要があります。実際、非常に古いバージョンの Apache を使用していない場合は、シャープ記号とAllowOverride All がデフォルトで設定されている必要があります。この手順は確認のためのもので、このように一致しない場合は、これに変更する必要があります。

この時点で、Apache サーバー下の CodeIgniter の URL 設定が完了しました。今後は、index.php を URL に含める必要がなくなり、システムはデフォルトで、index.php が最初に URL を処理するようになります。

(4) Nginxサーバーからindex.phpを削除します

上記のApacheからのindex.phpの削除については、公式ヘルプドキュメントでも簡単に説明されていますが、Nginxサーバーはそれほど幸運ではありません。 Web サイトを開発していたときは Apache をローカルで使用していましたが、Web サイトがオンラインになると、サーバーは Nginx になったので、Nginx サーバーの設定をオンラインで検索するしかありませんでした。とエラーがあったため、最終的に正しいバージョンを入手し、参照用に提供できるようになりました。私は Nginx の構成を詳しく勉強したことがないため、最初にオンライン サーバーで使用される環境について説明し、次に Nginx 構成の変更を示します。私の現在の構成では、個人的なテストでは非常にうまく機能します。同様の問題が発生した場合は、私の構成に従って試してください。ただし、お使いのシステムで動作するかどうかは保証できません。私のオンライン サーバーは私です。 XX Cloud (広告回避~) サーバーを購入しました (サーバーを一から構築するのは面倒です)。システムを構成した後は、デフォルトで Nginx になります。オペレーティングシステムはUbuntu 12.04を使用し、Nginxのバージョンはnginx/1.1.19です。

看网上好多人的Nginx服务器默认配置文件是/etc/nginx/nginx.conf,我的也不例外。不过有个注意事项,有时候nginx.conf中会有一句include ***(另外一个文件),也就是引用外边某个文件的内容作为配置文件,这时候,如果你没有在nginx.conf中找到服务器server相关配置,不妨去它include的另外一个文件中找一下,我的就是这种情况。在我的配置文件中,和服务器有关的配置应该改成如下:

<span>server {
        listen   </span><span>80</span><span>;

        root </span>/usr/share/nginx/<span>www;
        index index.php index.html index.htm;

        # Make site accessible </span><span>from</span> http:<span>//</span><span>localhost/</span>
<span>        server_name localhost;

        location </span>/<span> {
                index index.php index.html index.htm;
                
                # Uncomment to enable naxsi on </span><span>this</span><span> location
                # include </span>/etc/nginx/<span>naxsi.rules

                # 请留意下面这条重写规则,和前面的Apache有些类似
                </span><span>if</span> (!-<span>e $request_filename) { ##如果没有找到目标文件
                        rewrite </span>^/(.*)$ /index.php/$<span>1</span><span> last;
                        </span><span>break</span><span>;
                }
          
           
          # 上面的重写规则也可以改成下面这种形式,亲测两者都可行
          #</span><span> if</span> ($request_filename !~ (js|styles|images|robots\.txt|index\.php.*)){ ##如果不是请求js,styles等文件<br /><span>          #        rewrite </span>^/(.*)$ /index.php/$<span>1</span><span> last;<br />          #        </span><span>break</span><span>;<br />          # }
        }

        location </span>/doc/<span> {
                alias </span>/usr/share/doc/<span>;
                autoindex on;
                allow </span><span>127.0</span>.<span>0.1</span><span>;
                deny all;
        }
 
        location ~ \.php($|/)</span><span> {
                fastcgi_split_path_info </span>^(.+\.php)(.*<span>)$;
 
                fastcgi_pass </span><span>127.0</span>.<span>0.1</span>:<span>9000</span><span>;
      
                fastcgi_index index.php;
                fastcgi_param PATH_INFO $fastcgi_path_info;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }

        # deny access to .htaccess files, </span><span>if</span> Apache<span>'</span><span>s document root</span>
        # concurs with nginx<span>'</span><span>s one</span>
<span>        #
        location </span>~ /<span>\.ht {
                deny all;
        }
}</span>
ログイン後にコピー

具体的改动已经标注在上面的注释中了,很简单的一句重写规则,我却折腾了蛮久的时间。希望分享出来,帮助大家少踩坑。就写到这里吧!

 

PHP CodeIgniter框架中怎获取当前页面的URL

//use url helper
$this->load->helper('url');
current_url = current_url();
 

怎删除CodeIgniter框架中URL段里面的indexphp,实例,手册上的木看明白,自己写了个dome测试也不对

CodeIgniter 是一个轻量级的,快速的,能生成非常干净而且是对搜索引擎友好化的URL的PHPMVC框架,默认情况下,index.php 文件将被包含在你的 URL 中 例如:example.com/index.php/news/article/my_article首先确保你的Apache服务器支持支持 mod_rewrite,开启mod_rewrite需要修改httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前的#你可以很容易的通过 .htaccess 文件来设置一些简单的规则删除它。下面是一个例子,使用“negative”方法将非指定内容进行重定向:RewriteEngine onRewriteRule ^(.*)$ /index.php/$1 [L]如果你的项目不在根目录请把上面这一句改为:RewriteRule ^(.*)$ index.php/$1 [L]然后将该文件放在网站的根目录在上面的例子中,可以实现任何非 index.php、images 和 robots.txt 的 HTTP 请求都被指向 index.php。注意根据你项目的位置修改文件的配置。将AllowOverride设置为none可以完全禁止使用.htaccess文件,注意将你Apache的配置文件AllowOverride设置成All
 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/880091.htmlTechArticleCodeIgniter框架中关于URL(index.php)的那些事,codeigniter框架 最近,在做自己的个人网站时,采用了轻量级的php框架CodeIgniter。乍一看上去,代...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Java フレームワークの商用サポートの費用対効果を評価する方法 Java フレームワークの商用サポートの費用対効果を評価する方法 Jun 05, 2024 pm 05:25 PM

Java フレームワークの商用サポートのコスト/パフォーマンスを評価するには、次の手順が必要です。 必要な保証レベルとサービス レベル アグリーメント (SLA) 保証を決定します。研究サポートチームの経験と専門知識。アップグレード、トラブルシューティング、パフォーマンスの最適化などの追加サービスを検討してください。ビジネス サポートのコストと、リスクの軽減と効率の向上を比較検討します。

PHP フレームワークの学習曲線は他の言語フレームワークと比較してどうですか? PHP フレームワークの学習曲線は他の言語フレームワークと比較してどうですか? Jun 06, 2024 pm 12:41 PM

PHP フレームワークの学習曲線は、言語熟練度、フレームワークの複雑さ、ドキュメントの品質、コミュニティのサポートによって異なります。 PHP フレームワークの学習曲線は、Python フレームワークと比較すると高く、Ruby フレームワークと比較すると低くなります。 Java フレームワークと比較すると、PHP フレームワークの学習曲線は中程度ですが、開始までの時間は短くなります。

PHP フレームワークの軽量オプションはアプリケーションのパフォーマンスにどのような影響を与えますか? PHP フレームワークの軽量オプションはアプリケーションのパフォーマンスにどのような影響を与えますか? Jun 06, 2024 am 10:53 AM

軽量の PHP フレームワークは、サイズが小さくリソース消費が少ないため、アプリケーションのパフォーマンスが向上します。その特徴には、小型、高速起動、低メモリ使用量、改善された応答速度とスループット、および削減されたリソース消費が含まれます。 実際のケース: SlimFramework は、わずか 500 KB、高い応答性と高スループットの REST API を作成します。

Java フレームワークのパフォーマンス比較 Java フレームワークのパフォーマンス比較 Jun 04, 2024 pm 03:56 PM

ベンチマークによると、小規模で高性能なアプリケーションの場合、Quarkus (高速起動、低メモリ) または Micronaut (TechEmpower に優れた) が理想的な選択肢です。 SpringBoot は大規模なフルスタック アプリケーションに適していますが、起動時間とメモリ使用量が若干遅くなります。

Golang フレームワークのドキュメントのベスト プラクティス Golang フレームワークのドキュメントのベスト プラクティス Jun 04, 2024 pm 05:00 PM

明確で包括的なドキュメントを作成することは、Golang フレームワークにとって非常に重要です。ベスト プラクティスには、Google の Go コーディング スタイル ガイドなど、確立されたドキュメント スタイルに従うことが含まれます。見出し、小見出し、リストなどの明確な組織構造を使用し、ナビゲーションを提供します。スタート ガイド、API リファレンス、概念など、包括的で正確な情報を提供します。コード例を使用して、概念と使用法を説明します。ドキュメントを常に最新の状態に保ち、変更を追跡し、新機能を文書化します。 GitHub の問題やフォーラムなどのサポートとコミュニティ リソースを提供します。 API ドキュメントなどの実践的なサンプルを作成します。

さまざまなアプリケーションシナリオに最適な Golang フレームワークを選択する方法 さまざまなアプリケーションシナリオに最適な Golang フレームワークを選択する方法 Jun 05, 2024 pm 04:05 PM

アプリケーションのシナリオに基づいて最適な Go フレームワークを選択します。アプリケーションの種類、言語機能、パフォーマンス要件、エコシステムを考慮します。一般的な Go フレームワーク: Jin (Web アプリケーション)、Echo (Web サービス)、Fiber (高スループット)、gorm (ORM)、fasthttp (速度)。実際のケース: REST API (Fiber) の構築とデータベース (gorm) との対話。フレームワークを選択します。主要なパフォーマンスには fasthttp、柔軟な Web アプリケーションには Jin/Echo、データベース インタラクションには gorm を選択してください。

golang フレームワーク開発の実践的な詳細な説明: 質疑応答 golang フレームワーク開発の実践的な詳細な説明: 質疑応答 Jun 06, 2024 am 10:57 AM

Go フレームワーク開発における一般的な課題とその解決策は次のとおりです。 エラー処理: 管理にはエラー パッケージを使用し、エラーを一元的に処理するにはミドルウェアを使用します。認証と認可: サードパーティのライブラリを統合し、資格情報を確認するためのカスタム ミドルウェアを作成します。同時処理: ゴルーチン、ミューテックス、チャネルを使用してリソース アクセスを制御します。単体テスト: 分離のために getest パッケージ、モック、スタブを使用し、十分性を確保するためにコード カバレッジ ツールを使用します。デプロイメントとモニタリング: Docker コンテナを使用してデプロイメントをパッケージ化し、データのバックアップをセットアップし、ログ記録およびモニタリング ツールでパフォーマンスとエラーを追跡します。

Golang フレームワークの学習プロセスでよくある誤解は何ですか? Golang フレームワークの学習プロセスでよくある誤解は何ですか? Jun 05, 2024 pm 09:59 PM

Go フレームワークの学習には、フレームワークへの過度の依存と柔軟性の制限という 5 つの誤解があります。フレームワークの規則に従わない場合、コードの保守が困難になります。古いライブラリを使用すると、セキュリティと互換性の問題が発生する可能性があります。パッケージを過度に使用すると、コード構造が難読化されます。エラー処理を無視すると、予期しない動作やクラッシュが発生します。

See all articles