2017-02-03 9 views
0

CodeIgniterのURLでindex.phpを削除することについてさらにお詫び申し上げます。私はここで答えのいくつかを見てきましたが、私の問題を解決することができませんでした。予想通り、私は私のローカルの開発サーバーの両方が負荷Codeigniter:index.phpを削除することは、より少ないURIセグメントでのみ行われます。どうして?

  • http://localhost/project/index.php/controller/function/page
  • http://localhost/project/page

ようページを設定している瞬間に

。私はindex.php作品でpage/subpageのみバージョンをロードしようとした場合

しかし、:

  • http://localhost/project/index.php/controller/function/page/subpage(作品)
  • http://localhost/project/page/subpage

秒1にはない(動作しません)私のコントローラを呼び出しても、CodeIgniter 404エラーページが生成されます。これは問題が私の.htaccessファイルにあると思わせるが、わからない。私は.htaccessファイルをよく理解していません。

マイ.htaccessファイルは、私は人々が他の類似の質問に提案してきたが、それらのどれも汎用的なPHP 404ページを生成する代わりに、1以外、何の効果もなかった順列の多様性を試してみました

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php/$0 [PT,L]enter code here 

が含まれていますCodeIgniter one。

http://localhost/project/page/subpageを読み込む方法は何ですか?

マイroutes.phpファイルが含まれています:

$route['default_controller'] = 'Controller'; 
$route['404_override'] = ''; 
$route['translate_uri_dashes'] = FALSE; 
$route['(:any)'] = 'controller/index/$1'; 

config.phpファイルが含まれています

$config['index_page'] = ''; 
$config['uri_protocol'] = 'REQUEST_URI'; 

は私が投稿するために役立つだろう他の設定はありますか?

+0

この '$ route ['(:any)'] = 'コントローラ/インデックス/ $ 1';' ??これは意味がありますか?これはデフォルトコントローラのように同じです... –

+0

@AbdullaNilam http:// localhost/project/page /をロードできるようにそこにあります。その行がなければ、デフォルトコントローラはhttp:// localhost/project /にホームページをロードしますが、http:// localhost/project/page /の404エラーが表示されます。多分私はそこで使うことができるより良いものがあるかもしれませんが、もし私がそれを知っていたら、私はそれを使ったでしょう。助言がありますか? – Mehmet

答えて

0

使用この.htaccess

RewriteEngine on 
RewriteCond $1 !^(index\.php|assets|image|resources|robots\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L,QSA] 

Read More on Codeigniter Documentation

+0

提案していただきありがとうございます。残念ながら、私は.htaccessファイルに同じ問題を使用しています。 – Mehmet

+0

あなたのベースURLは何ですか? –

+0

これはあなたが探している答えだと確信していませんが、うまくいけば助けになるでしょう...私のベースURLはhttp:// localhost/northern /(http:// localhost/project /これまでのところ)。私のプロジェクトは〜/ Repositories/northern /にあります。そのディレクトリにはCodeIgniterアプリケーションと/ public /ディレクトリがあります。パブリックディレクトリには、CodeIgniterを実行するindex.phpファイルが含まれています。パブリックディレクトリは、/ opt/lamp/htdocs/northernからシンボリックリンクされています。/opt/lamp/htdocsは私のウェブサーバールートです。 – Mehmet

0

私が見つけた解決策はconfig.phpファイルに次のルートを追加することです:

$route['(:any)/(:any)'] = 'controller/index/$1/$2'; 

これは私には乱雑に見えますが、それは私の問題を解決します。私は将来のために問題を作り出しているのかどうか分かりません。

+1

これは最も確実にこれを行う方法ではなく、プロジェクト全体に無制限にアクセスできます。理由はルーティングがあります。 –

+0

良い点、@BrianRamsey。私はそれを念頭に置くでしょう。私の場合、 '$ 1'と' $ 2'のために予期せぬ入力があった場合に '404'を投げるようにコントローラーを設計しました。おそらく、おそらく私が手動で効果的にルーティングしていました。どちらか。 – Mehmet

+0

システムとアプリケーションのフォルダがドキュメントルートの外側にあることを強くお勧めします。私は通常、それらを「公開」フォルダ(index.phpとすべてのアセットを含む)に入れます。何かに行きなさい。 –

関連する問題