web-dev-qa-db-ja.com

URLからindex.phpを削除-Codeigniter 2

CodeigniterのURLからindex.phpを削除できません。 Codeigniter 1.7でいくつかのWebサイトを作成しましたが、使用した.htaccessコードは2では機能しません。

私は使用してみました

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

そして

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt|css)
RewriteRule ^(.*)$ ./index.php/$1 [L]

</IfModule>

RewriteBase/inなしでも試しました。

$ config ['uri_protocol']をREQUEST_URIとQUERY_STRINGに変更しましたが、何も変更していません。

$ config ['index_page'] = "";を設定しました

ファイル構造は192.168.0.130/(site)/であるため、サーバーのルートに戻る必要があり、index.phpファイルが見つかりません。

私が作成したすべてのコントローラーには、192.168.0.130 /(site)/index.php/testcontroller

ありがとうございました。

これが以前に尋ねられた場合、おologiesびします-私は見ることができるものを見て、試しました。

編集:

また、デフォルトのフォルダを次のように変更したことも追加する必要があります

応用

CI-2.0

index.php

そして、index.phpのパスを正しいものに変更しました。

29
Paul

投稿した最初のコードブロックを試しますが、/ index.phpの代わりに/(site)/index.phpを使用してみてください(obvは(site)をサイトフォルダーの名前に置き換えます)。

23
WNRosenberg

これは私のために働いた:

  1. Htaccessファイルを作成します
  2. $ config [‘index_page’]を空に設定します(config.php)
  3. string Set $ config ['uri_protocol'] = 'REQUEST_URI'; (config.php)

これは私のhtaccessファイルです:

Options -Indexes
Options +FollowSymLinks
RewriteEngine On
RewriteBase /

#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,

RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ index.php?/$1 [L]

#When your application folder isn't in the system folder

RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
# Submitted by: ElliotHaughin   

ErrorDocument 404 /index.php

ソース:

http://taggedzi.com/articles/display/codeigniter-2-htaccess-and-friendly-urls

15
Robin Morgan
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?/$1 [L]

これはルートフォルダーでのみ必要です。これを.htaccessに追加します

3
saurabh kamble

他の人々とこの CodeIgnitor URL documnetation からのすべての指示に従った後、サーバーの再起動を忘れないでください。私はそれをするのを忘れて、他のすべての解決策を試し続けました。

2
neelabh

私はこれを2日間続けました。可能なすべてを試しました。私はちょうどあなたが次を必要とすることを出てきました:

タイプ:

Sudo nano /etc/Apache2/sites-available/default

AllowOverride NoneをAllowOverride Allに変更します-これにより、.htaccessファイルへのアクセスが許可されます

<Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
            # Uncomment this directive is you want to see Apache2's
            # default start page (in /Apache2-default) when you go to /
            #RedirectMatch ^/$ /Apache2-default/
</Directory>

また、Apacheでmodの書き換えを有効にします。

http://stackoverflow.com/questions/3131236/how-do-you-enable-mod-rewrite

これが役立つことを願って、マリオ

2
Mário Carvalho

1)ルートフォルダーに.htaccessファイルを作成します

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

2)Applicationフォルダーのapplication/config/config.phpファイルを編集します

$config['base_url'] = 'http://localhost/projectName';

 $config['index_page'] = '';         // remove index.php 

私はそれがあなたのために働くことを願っています

1
tushar

.htaccessに以下のコードを追加するだけです。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
1
daxter