中央のどこかにあるcodeigniterのすべてのパスに突き出ている"index.php"
を削除するにはどうすればよいですか? index.php-fied URLs
以外をきれいにしたいですか?
Apacheを使用している場合、以下を含むルートWebディレクトリに.htaccessファイルを配置します。
RewriteEngine on
RewriteCond $1 !^(index\.php|[Javascript / CSS / Image root Folder name(s)]|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
別の良いバージョンがここにあります:
Index.phpの削除にいくつかの大きな問題がありました。一般的なルールとして、以下の.htaccessは複数のサーバーでテストされており、一般的に機能します。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
<Files "index.php">
AcceptPathInfo On
</Files>
うまくいかない場合、次のステップは設定ファイルを調整することです。他のURIプロトコルのいくつかを試してください。
| 'AUTO' Default - auto detects
| 'PATH_INFO' Uses the PATH_INFO
| 'QUERY_STRING' Uses the QUERY_STRING
| 'REQUEST_URI' Uses the REQUEST_URI
| 'ORIG_PATH_INFO' Uses the ORIG_PATH_INFO
$config['uri_protocol'] = 'ORIG_PATH_INFO';
それでもうまくいかない場合は、サブフォルダーを含めるように書き換えルールを変更してみてください。開発サーバーなどで一時URLを使用している場合、これはしばしば問題になります。
RewriteRule ^(.*)$ /subofolder1/subfolder2/index.php/$1 [L]
これらのオプションを試してみてください、動作するはずです。また、インデックスファイルが次のように設定されていることを確認してください。
$config['index_page'] = '';
幸運を!
Index.phpファイルとともに、アプリケーションのルートディレクトリに.htaccessファイルを用意します。 (htaccess拡張子が正しいかどうかを確認してください。Bzhtaccess.txtは機能しませんでした。)
そして、次のルールを.htaccessファイルに追加します。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
次に、application/config/config.phpファイルで次の行を見つけます。
$config['index_page'] = 'index.php';
次のように変数を空に設定します。
$config['index_page'] = '';
それだけです、それは私のために働いた。
さらに動作しない場合は、次の変数をこれらのパラメーター(「AUTO」、「PATH_INFO」、「QUERY_STRING」、「REQUEST_URI」、および「ORIG_PATH_INFO」)で1つずつ置き換えてください。
$config['uri_protocol'] = 'AUTO';
system\application\config\config.php
ファイルを見てください。index_page
という名前の変数があります。
このように見えるはずです
$config['index_page'] = "index.php";
に変更する
$config['index_page'] = "";
次に、前述のように、.htaccess
ファイルに書き換えルールを追加する必要もあります
注:CodeIgniter v2では、このファイルはシステムフォルダーからapplication\config\config.php
に移動されました
上記のすべての方法が失敗し、AllowOverride NoneからAllowOverride All/ etc/Apache2/sites-available/defaultにある仮想ホストファイル
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All <---- replace None with All
</Directory>
<Directory /var/www >
Options Indexes FollowSymLinks MultiViews
AllowOverride All <--- replace None with All
Order allow,deny
allow from all
</Directory>
...
ステップ1 => .htaccessファイルを、アプリケーションおよびシステムフォルダーが存在するルートフォルダーに配置します。
ステップ2 => yourdomain.com/project/のようなサブフォルダーを使用するWebパスの場合、htaccessファイルで次のコードを使用します
RewriteEngine on
RewriteBase /project/
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /project/index.php/$1 [L]
Yourdomain.comのようなルートフォルダを使用するWebパスの場合、htaccessファイルで次のコードを使用します
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /codeigniter/index.php/$0 [PT,L]
rewriteRule。* index.php/$ 0 [PT、L]をプロジェクトフォルダー名「codeigniter」で変更した後、それは私のために機能しています。ご支援いただきありがとうございます。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
これは間違いなく機能しなければなりません。
私は追加するかもしれないと思った
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
.htaccessになり、application/config.php変数を次の方法で編集してください:
取り替える
$config['uri_protocol'] = “AUTO”
と
$config['uri_protocol'] = “REQUEST_URI”
mod_rewrite
が有効になっていることを確認してください(そうではありませんでした)。
有効にする:
Sudo a2enmod rewrite
また、AllowOverride None
をAllowOverride All
に置き換えます
Sudo gedit /etc/Apache2/sites-available/default
最後に...
Sudo /etc/init.d/Apache2 restart
私の.htaccessは
RewriteEngine on
RewriteCond $1 !^(index\.php|[assets/css/js/img]|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
CI wikiの このチュートリアル の指示に従ってmod_rewrite
を使用します。
これは、私のCIプロジェクトの1つに対する.htaccessです。
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
RewriteRule ^(.*)$ /projectFolder/index.php/$1 [L]
最後の行に必要なものが表示されますが、フォルダ構造の設定方法に応じて「/ projectFolder」が必要な場合と必要ない場合があります。幸運を!
CodeigniterのURLパスでindex.phpを解決する方法は2つあります
1:config/config.php変更コードで:
$config['index_page'] = 'index.php';
に
$config['index_page'] = '';
2:作成されていない場合は、ルートパスに.htacessを作成し、次のコードをコピーします。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
それを保存してから、Apacheの設定を確認してくださいrewrite_module OR mod_rewriteが有効になっています。有効になっていない場合は有効にしてください。 (ベストアプローチ)!
.htaccessファイルとして、 Kohana Framework によって提供されるものを使用するのが良いオプションです。
# Turn on URL rewriting
RewriteEngine On
# Installation directory
RewriteBase /
# Protect hidden files from being viewed
<Files .*>
Order Deny,Allow
Deny From All
</Files>
# Protect application and system files from being viewed
RewriteRule ^(?:application|system)\b.* index.php/$0 [L]
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]
うまく機能する、よく考えられた.htaccessです。
\application\config\config.php
ファイルを見てください。index_page
という名前の変数があります。
このように見えるはずです
$config['index_page'] = "index.php";
に変更する
$config['index_page'] = "";
次に、前述のように、次のように.htaccess
ファイルに書き換えルールを追加する必要もあります。
RewriteEngine on
RewriteCond $1 !^(index\\.php|resources|robots\\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
それは私のために働く、あなたも願っています。
私は多くの異なるホスティングのApache2でこれをテストしましたが、うまく機能します。
このhtaccessを使用
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
enabled mod_rewirte
にphpinfo();
が付いていることを確認してください
config/config.phpでこれを行います:
$config['index_url'] = '';
|
| 'AUTO' Default - auto detects
| 'PATH_INFO' Uses the PATH_INFO
| 'QUERY_STRING' Uses the QUERY_STRING
| 'REQUEST_URI' Uses the REQUEST_URI
| 'ORIG_PATH_INFO' Uses the ORIG_PATH_INFO
|
*/
$config['uri_protocol'] = 'AUTO';
まだ機能しない場合は、$config['uri_protocol']='AUTO'
を行40/54にリストされているapplication/config/config.php
ファイルのいずれかに変更してください。
goDaddyホスティングにAUTO
またはREQUEST_URI
の代わりに"QUERY_STRING"
を使用することもありました。
LinuxでApache2サーバーを使用している場合、.htaccessファイルの変更の横にあるApache2.confファイルをオーバーライドする必要がある場合があります。 / etc/Apache2/Apache2.confでApache2構成ファイルを見つけます。
検索ディレクトリ/ var/www /変更AllowOverride None-> AllowOverride All
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory
私は多くのソリューションを試しましたが、私が思いついたのはこれです:
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|(.*)\.swf|forums|images|css|downloads|jquery|js|robots \.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php?$1 [L,QSA]
これにより、必要に応じてURLからindex.phpが削除されます。
これらの行を.htaccess
ファイルで使用します。ルートフォルダに配置します
RewriteEngine on
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
その後、 http://example.com/controller/function/parameter にアクセスできます
http://example.com/index.php/controller/function/parameter の代わりに
ルートWebディレクトリに.htaccessファイルを配置
あなたが何を微調整しても-上記が満たされない場合-それは動作しません。通常、Systemフォルダーにあり、ルートにあります。乾杯!
これは私に完全な魔法を与えました:
RewriteEngine on
RewriteBase /
# Hide the application and system directories by redirecting the request to index.php
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
それが役に立てば幸い!
ステップ1:
これをhtaccessファイルに追加します
<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</IfModule>
ステップ2:
Codeigniter configのindex.phpを削除します
$config['base_url'] = '';
$config['index_page'] = '';
ステップ3:
Apache構成でのhtaccessのオーバーライドを許可(コマンド)
Sudo nano /etc/Apache2/Apache2.confおよびファイルを編集して、
AllowOverride All
wwwフォルダー用
ステップ4:
Apache mod rewriteを有効化(コマンド)
Sudo a2enmodの書き換え
ステップ5:
Apacheの再起動(コマンド)
Sudo /etc/init.d/Apache2 restart
これは、このコードを.htaccessファイルのアプリケーションフォルダーに貼り付けるのに役立ちます
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
<Files "index.php">
AcceptPathInfo On
</Files>
<IfModule mod_php5.c>
php_value short_open_tag 1
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /Foldername of your ci/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
.htaccessに次のコードをコピーして貼り付けます
RewriteEngine on
Options -Indexes
RewriteCond $1 !^(index\.php|assets|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
こんにちはこの1つは私を働いた
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder/index.php?/$1 [L]
これと同様に
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder/index.php?/$1 [L]
このcodeigniterアプリケーションがサブドメインとしてホストされている場合、フォルダーはサブフォルダーの名前です(例:domainname/folder/index.php)。
それがあなたのために働くことを願っています。ありがとう。