0

CodeIgniter アプリケーションをデプロイするたびに、.htaccess のパスを変更するのに苦労しています。したがって; 実際のプロジェクトの場所に関係なく機能する、適切で適切なソリューションを探しています。

障害: 私のローカル テスト環境は localhost/ ではなく、localhost/project です。これは、おそらくライブ環境では当てはまりません (より可能性が高い /)。したがって、とにかく機能するソリューションを好みます。

私の現在の.htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

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

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

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

<IfModule !mod_rewrite.c>
    ErrorDocument 404 /project/index.php
</IfModule>  

パスとして index.php だけを使用しても機能しません。404 not found エラーが表示されます。いろいろな組み合わせを試してみたので、おすすめを教えてください。ありがとう!

4

1 に答える 1

0

個人的には、.htaccess でシステムとアプリケーションのフォラーを否定するのは好きではありません。

ここにある「CI のベスト プラクティス」ガイド ( http://codeigniter.com/forums/viewthread/125687/ ) に従って、アプリケーションとシステム フォルダーを public_html から移動し、index.php だけを残す必要があります。次に、人々が何をしようとしても、httpからアプリケーションとシステムフォルダーにアクセスできません。

それまでの間、すべてのプロジェクトで使用する .htaccess ファイルを次に示します。どのプロジェクトでも変更は必要ありません。それはただ「うまくいく」だけです(私にとって)。

Options -Indexes
Options +FollowSymLinks

# Set the default file for indexes
DirectoryIndex index.php

<IfModule mod_rewrite.c> 
        # activate URL rewriting 
        RewriteEngine on  

        # do not rewrite links to the documentation, assets and public files 
        RewriteCond $1 !^(files|css|js|assets|uploads|captcha)

        # do not rewrite for php files in the document root, robots.txt                  
        RewriteCond $1 !^([^\..]+\.php|robots\.txt) 

        # but rewrite everything else   
        RewriteRule ^(.*)$ index.php/$1 [L]
 </IfModule>

 <IfModule !mod_rewrite.c>     
        # If we don't have mod_rewrite installed, all 404's
        # can be sent to index.php, and everything works as normal. 
        ErrorDocument 404 index.php 
  </IfModule>   

ああ、私はこれをローカルホスト上の複数のプロジェクトに使用しています。つまり、 localhost/project1 、 localhost/project2

htaccess ファイルのコピーを各プロジェクトのルートに置くだけです。ルート localhost にこのファイルがありません

于 2012-04-22T08:05:30.353 に答える