3

Codeigniterサーバーの横に別のスクリプトをインストールしたい。問題は、Codeigniter にはデフォルトで、.htaccessphp ファイルへの直接アクセスを防ぐために以下のコードを含むファイルが含まれていることです。

# Hide all PHP files so none can be accessed by HTTP
RewriteRule (.*)\.php$ index.php/$1

このコードに例外を追加するにはどうすればよいですか?! 私のPHPファイルが、あるフォルダーとは別のフォルダーに.htaccessある場合、どのように例外を設ける必要がありますか?!

私のコード全体は次のようになります。

# set it to +Indexes
Options -Indexes

Options SymLinksIfOwnerMatch

# Set the default file for indexes
DirectoryIndex index.php

<IfModule mod_rewrite.c>
    # mod_rewrite rules
    RewriteEngine on

    # If the file is NOT the index.php file
    RewriteCond %{REQUEST_FILENAME} !index.php
    # Hide all PHP files so none can be accessed by HTTP
    RewriteRule (.*)\.php$ index.php/$1

    # If the file/dir is NOT real go to index
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [QSA,L]

</IfModule>

# If Mod_ewrite is NOT installed go to index.php
<IfModule !mod_rewrite.c>
    ErrorDocument 404 index.php
</IfModule>
4

2 に答える 2

2

次のような別の除外条件を追加します。

# If the request is not from /some-folder/
RewriteCond %{REQUEST_URI} !^/some-folder/ [NC]
# If the file is NOT the index.php file
RewriteCond %{REQUEST_FILENAME} !index.php
# Hide all PHP files so none can be accessed by HTTP
RewriteRule ^(.*)\.php$ index.php/$1 [L,NC]
于 2013-08-29T14:22:51.953 に答える
0

これが役立つ場合があります-codeigniterフォルダーをhtmlファイルの上に1レベル上げます。ci フォルダーの名前も少し変更して、これを示します。

 /               /html/site files are here
/applicationbeta/html/
/systemci2      /html/ 

サイトファイルで、フォルダーを作成します。たとえば、「website」に codeigniter index.php ファイルを配置します css や js などのアセットを配置します

              /html/website/index.php 
              /html/website/assets/

次に、index.php ファイルで、システム フォルダーとアプリケーション フォルダーへのパスを変更します。さまざまなバージョンを簡単に作成できることを示すために、名前を変更しました。

$system_path = '../../systemci2'; 
$application_folder = '../../applicationbeta';  

index.php にベース URL 構成を配置します。これにより、Web サイト フォルダーが処理され、すべてのリンクが正しくなります。

$assign_to_config['base_url'] = 'http://domain.com/website/';

フォルダー web サイトの htaccess ファイルには、次のような行が含まれている必要があります。

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

このようにすることには多くの利点があります。含む--開発サーバーと展開サーバーの base_url() 設定について心配する必要はありません。

多くのコードで base_url を動的に設定する方法に関する長いチュートリアルをスキャンしました。しかし、index.php ファイルに設定するだけであれば、心配する必要はありません。index.php ファイルの場所は変更されないからです。

于 2013-08-30T02:07:28.410 に答える