ホームページ > バックエンド開発 > PHPチュートリアル > URL内のindex.phpを削除するCIフレームワークの究極のソリューション

URL内のindex.phpを削除するCIフレームワークの究極のソリューション

WBOY
リリース: 2016-06-23 13:52:04
オリジナル
857 人が閲覧しました

動的 Web ページ テクノロジを使用して生成されたテクノロジのほとんどには、index.php が含まれています。ルーティングの混乱を引き起こすことなく、URL 内の inde.php を効果的に削除すると、Web ページのアドレスがよりわかりやすくなります。ただし、以下は CI フレームワークのものです。その実装原理は、他の状況でも同様の問題を解決するための大きな参考値を持っています。
公式ソリューション

デフォルトでは、index.php ファイルが URL に含まれます:

example .com/index.php/news/ article/my_article

.htaccess ファイルにいくつかの簡単なルールを設定することで、簡単に削除できます。以下は、「ネガティブ」メソッドを使用して、指定されていないコンテンツをリダイレクトする例です:

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

注: プロジェクトがルート ディレクトリにない場合は、上記の文を次のように変更してください: RewriteRule ^(.*)$index.php/$1 [L]

上記の例では、何でもできます。 non-index.php、画像、robots.txt に対する HTTP リクエストは、index.php に送信されます。

私の究極の解決策

しかし、実際には、上記の解決策は Apache 環境で実行されているサーバーにのみ適用でき、CI プログラムが非ルート ディレクトリに配置されている場合、または何らかの仮想ディレクトリに配置されている場合には十分な汎用性がありません。上記の解決策を使用すると、「404 エラー」や「入力ファイルが指定されていません」などのエラーが発生します。Baidu は、関連する問題の解決策を参照した結果、URL パス内のindex.php を削除する普遍的で効果的な方法を見つけました。 、コードリファレンスは次のとおりです:

インデックスがルート ディレクトリにある場合、index.php が配置されているルート ディレクトリに新しい .htaccess ファイルを作成し、次のコードを使用できます:

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

Index.php がルート ディレクトリにない場合は、新しい .htaccess を作成できますIndex.php が存在するディレクトリ内のファイルを作成し、次のコードを使用します:

RewriteEngine on
RewriteCond $1 !^(index.php|images|robots.txtl)
RewriteRule ^(.*)$ /path_to_app/index.php ?/$1 [L]

path_to_app をファイルが配置されているディレクトリであるindex.php に置き換えることに注意してください。index.php がルート ディレクトリのツール サブフォルダーに配置されていると仮定すると、次のように記述できます。
RewriteEngine on
RewriteCond $1 !^(index.php|images|robots.txtl)
RewriteRule ^ (.*)$ /tool/index.php?/$1 [L]

上記のソリューションは、 Apache環境でURL内のindex.phpを効果的に削除する方法について質問がありましたら、コメントまたはメッセージを残してください。解決策をお知らせします。

さらに、IIS 環境で URL 内の Index.php を効果的に削除する方法については、次の記事を参照してください:

IIS7 5 Index.php web.config 構成ファイルを削除します


ディスカッションに返信 (解決策)

CI フレームワークを初めて使用するため、どこから始めればよいかわかりません。

プロジェクトを実行するための最速の方法

を使用して多くの方法を見つけましたが、どれも要点に達しませんでした。元の投稿者のおかげですぐに解決できました

これを変更しました。簡単に、アプリ内で /config/config.php を見つけます

この段落を $config['index_page'] = 'index.php'; に変更します

URL 転送フレームワーク内で行われています .htaccess はまったく必要ありません

ルートディレクトリの場合、path_to_app (プロジェクトファイル) ステートメントはどこにありますか?

CI フレームワークを初めて使用するため、どこから始めればよいのかわかりません。

ドキュメントについては中国語フォーラムにアクセスしてください

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート