14

.htaccess技術的な理由から、CodeIgniter で URL から index.php を削除するために使用したくありません。ルート部分を見てきました。私もこのようなルートで試しました:

$route['(:any)'] = 'index.php/$1';

しかし、それは機能していません。

index.phpCodeIgniter でルーターを使用して削除することは可能ですか?

4

2 に答える 2

9
Is it possible to remove index.php without using .htaccess?

いいえ、それはphpやcodeigniterを超えたものであり、サーバーのものです。

なんで ?

ユーザーが に行こうとするとどうなりlocalhost/codeigniter/welcome/indexますか?

MVC は基本的に、すべての php ファイルをそのフォルダー内に隠します。ユーザーがコードを操作する方法を 1 つだけ提示します。index.php

何が起こるか

  1. index.php に向けられた Web サイトへの HTTP リクエスト
  2. index.php で codeigniter ブートストラップをロードし、codeigniter ルーターを呼び出します
  3. ルーターは、入力した URL (welcome/index) を検索し、コントローラー フォルダー内からファイル Welcome を取得し、index 関数を呼び出します。

これは、すべての MVC フレームワークが行うことは単純で、コードを隠し、単一のフロント ファイルを使用してすべてのリクエストを処理し、ルーター クラスを使用してリダイレクトします。

そのため、index.php を使用する場合hideは、サーバーにすべての呼び出しを単に index.php にリダイレクトするように指示する方法を見つける必要があります。

index.php は Web サイトへのアクセス ドアであり、サーバーはすべてのリクエストを index.php に送信する必要があることを認識している必要があります。何らかの方法で、それが index.php/ が URL に存在するか、何らかのサーバー構成を使用して呼び出しをリダイレクトする必要がある理由です。しかし、それは常にロードされています

于 2014-03-12T18:23:30.477 に答える
1

index.phpURLに含める必要のないルートを操作するために、次のことを行いました。

  1. セキュリティ上の理由から名前を変更index.phpしました。index_ci.php
  2. .htaccessファイルには次のものがあります。

    DirectoryIndex index_ci.php index.html
    RewriteCond %{REQUEST_FILENAME} !-f  
    RewriteCond %{REQUEST_FILENAME} !-d  
    RewriteCond $1 !^(index_ci\.php) # do not allow direct access  
    RewriteRule ^(.*)$ index_ci.php/$1 [L,QSA]
    
  3. Myはプレフィックスroutes.phpなしの URL を受け入れるようになりました。index.php例:

    $route['welcome'] = "welcome";
    
于 2013-06-24T08:03:59.557 に答える