ホームページ  >  記事  >  バックエンド開発  >  CI URI は、index.php を効果的に削除します (CI マニュアルを改善します)

CI URI は、index.php を効果的に削除します (CI マニュアルを改善します)

WBOY
WBOYオリジナル
2016-06-23 13:37:32836ブラウズ

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

http://localhost/index.php/welcome 明らかに、デフォルトでは、index.php が URL アドレス セグメントにあります。 URLのシンプルさはSEOの進行にある程度影響します。この記事で紹介した方法で、この厄介なIndex.phpを削除することができます。

CodeIgniter ユーザー マニュアルにこの問題の解決策があることに気づいたかもしれません。ただし、公式に提供されている .htaccess 構成では常に問題が解決されるわけではありません。次のデバッグ手順は、全員が共有できるように作成者によって提供されています:
前提条件: サーバー構成では Web サーバーとして Apache を使用します。

1. 次の構成情報を .htaccess ファイルとしてコピーして保存します (.htaccess ファイルはルート ディレクトリ、つまりアプリケーション ディレクトリと同じレベルに配置されます)、

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

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

.htaccess ファイルにいくつかの簡単なルールを設定することで、簡単に削除できます。

------------------------------------------------ ------------------

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index.php|画像 |robots.txt)
RewriteRule ^(.*)$ /index.php/$1 [L
-------------------------------------- - --------------------------------------

注: プロジェクトの場合はルート ディレクトリにありません。 上記の文を次のように変更してください: RewriteRule ^(.*)$index.php/$1 [L] 上記の例では、index.php、images、robots.txt 以外の HTTP リクエストを送信できます。 phpにインデックスを付けます。

(最初の手順は CI 操作マニュアルと同じです)

2. 変更が完了したら、CI のデフォルトのようこそページ (http://localhost/welcome) にアクセスすると、エラー が報告され、エラー メッセージは次のとおりです:

---------------------------------- ---------------- ---------------

内部サーバー エラー

サーバーで内部エラーまたは構成ミスが発生し、リクエストを完了できません。
サーバー管理者 admin@sky00 .com に連絡し、エラーが発生した時刻と、エラーの原因となった可能性のある行為をお知らせください。
このエラーに関する詳細情報が入手できる場合があります。サーバーエラーログ内

-------- ---------------------------------- ---------------- ----------------------------

全部見ましたWeb サイトでこのようなエラーが報告され、画像や TXT も開くことができませんでした。その後、プログラムを確認したところ、htaccess、httpd.ini、nginx.conf の 3 つのファイルがあることがわかりました。私が最初に思いついたのは、配布ファイル .htaccess でした。思い切って Web サイトを開いて、削除されたファイルを取得して、Apache で .htaccess を開きました。それ:

Apache 設定ファイル httpd.conf を見つけます

Options FollowSymLinks
AllowOverride None

一部のバージョンはこのように書かれています

Options FollowSymLinks ExecCGI Indexes
AllowOverride None

どのように書いても、必要なのは以下のことだけです次の

AllowOverride None をAllowOverride All

に変更します。

次に、

LoadModule rewrite_module modules /mod_rewrite.so

を見つけます。

この前の "#" 記号を削除し、つまりコメントを削除して、Apache を再起動します。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。