"index.php"
中心のどこかでcodeigniterのすべてのパスの突き出しを削除するにはどうすればよいですか?すっきりしたくないindex.php-fied URLs
?
"index.php"
中心のどこかでcodeigniterのすべてのパスの突き出しを削除するにはどうすればよいですか?すっきりしたくないindex.php-fied URLs
?
回答:
Apacheを使用している場合は、以下を含む.htaccessファイルをルートWebディレクトリに配置します。
RewriteEngine on
RewriteCond $1 !^(index\.php|[Javascript / CSS / Image root Folder name(s)]|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
別の良いバージョンはここにあります:
RewriteCond $1 !^\/(index\.php|assets|robots\.txt)
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';
上記のすべての方法が失敗し、/ etc / apache2 / sites-available / defaultにある仮想ホストファイルでAllowOverride NoneをAllowOverride Allに変更していないことがわかりました
<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 $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”
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
これは間違いなく機能するはずです。
有効にしたことを確認します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]
actions
:stackoverflow.com/questions/14419757/...
このチュートリアルのmod_rewrite
指示に従って、CIウィキから使用します。
.htaccessファイルとして、Kohanaフレームワークが提供するファイルを使用することをお勧めします。
# 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です。
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またはmod_rewriteが有効になっていることを確認してください。有効になっていない場合は有効にしてください。(ベストアプローチ)!
私は多くの異なるホスティングの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'
は、application/config/config.php
40/54行目のリストにある内部ファイルのいずれかに変更してみてください。
時々私は使用:REQUEST_URI
の代わりに、AUTO
または"QUERY_STRING"
のためのGoDaddyのhostingsを
\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]
それは私のために働く、あなたも願っています。
Linuxを使用していて、apache2サーバーを使用している場合は、.htaccessファイルの変更の他に、apache2.confファイルもオーバーライドする必要がある場合があります。/etc/apache2/apache2.confで apache2構成ファイルを見つけます。
検索ディレクトリ/ var / www /変更AllowOverrideなし-> AllowOverride All
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory
ルートWebディレクトリに.htaccessファイルを配置します
どんな微調整でも、上記が満たされない場合は機能しません。通常はSystemフォルダにあり、ルートにあるはずです。乾杯!
application
ルートではなくディレクトリにあります。
私は多くの解決策を試しましたが、私が思いついたのはこれです:
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の代わり
これは私に完全な魔法をかけました:
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]
それが役に立てば幸い!
こんにちはこれは私を働いた
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)。
うまくいきますように。ありがとう。
.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 :
これをhtaccessファイルに追加します
<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</IfModule>
ステップ2 :
codeigniter設定で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 rewrite
ステップ5:
Apacheを再起動(コマンド)
sudo /etc/init.d/apache2 restart