0

私は会社のプロジェクトの更新に取り組んでいます。ファイルをローカルホストに転送しました。したがって、プロジェクトは「localhost/project/」にあります。ブラウザーで Web サイトを開くと、すべてのリンクが "localhost/filename" を指し、プロジェクト フォルダーの 1 レベル上のディレクトリになります。私はいくつかの調査を行い、htaccessの変更を提案している人々に気付きましたが、それでも正しい結果を得ることができませんでした. そして提案してください。私の側で何かしたいことがあれば、聞いてください。感謝!

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

始める :

http://localhost/projectfolder/

<a href="/" title="">Home</a>

につながる:

http://localhost/

Config.php :

$config['base_url'] = 'http://localhost/projectfolder/';
$config['index_page'] = "";
$config['uri_protocol'] = "AUTO";
$config['url_suffix'] = ".html";
$config['language'] = "english";
$config['charset'] = "UTF-8";
$config['enable_hooks'] = FALSE;
$config['subclass_prefix'] = 'MY_';
$config['permitted_uri_chars'] = 'a-z & + 0-9~%.:_\-,\'?';
$config['enable_query_strings'] = FALSE;
$config['controller_trigger']   = 'c';
$config['function_trigger']     = 'm';
$config['log_threshold'] = 0;
$config['log_path'] = '';
$config['log_date_format'] = 'Y-m-d H:i:s';
$config['cache_path'] = '';
$config['encryption_key'] = "";
$config['sess_cookie_name']     = 'ci_session';
$config['sess_expiration']      = 7200;
$config['sess_encrypt_cookie']  = FALSE;
$config['sess_use_database']    = FALSE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 300;
$config['cookie_prefix']    = "";
$config['cookie_domain']    = "";
$config['cookie_path']      = "/";
$config['global_xss_filtering'] = FALSE;
$config['compress_output'] = FALSE;
$config['time_reference'] = 'local';
$config['rewrite_short_tags'] = FALSE;
$config['proxy_ips'] = '';
4

4 に答える 4

1

おそらく、config.php ファイルを開いて、base_url の値を localhost または localhost:8080 (または localhost が使用するポート) に変更する必要があります。

編集

/問題は、すべてのアンカー タグが、ホームページなどのハード コードされた値を使用していることです。

サーバー上では、これは問題なく動作します。なぜなら、あなたのドメインはexample.comに行くこと/によってexample.com/.

codeigniter でリンクを作成する正しい方法は、anchor()ヘルパーを使用するか、プロジェクトのように手動でアンカー タグを作成することですが、href でbase_url()またはを使用します。site_url()

ホームページへのリンクを修正する方法の例は次のとおりです。

<a href="<?php echo base_url(); ?>/">blah</a>

href 値の前に base_url を付けるだけでもすべてのリンクで機能する場合がありますが、リンクの値によって異なります。

これは codeigniter ヘルパー メソッドへのリンクです - http://ellislab.com/codeigniter/user-guide/helpers/url_helper.html

非常に優れた codeigniter マニュアルを参照することをお勧めします。

于 2013-02-22T15:39:26.713 に答える
0

この単純な .htaccess を試してみてください。うまくいくようです: Yours is missing the ReWriteBase


<IfModule mod_rewrite.c>

    RewriteEngine on
    RewriteBase /projectfolder/

    # If the start of the URL doesn't match one of these...
    RewriteCond $1 !^(index\.php|robots\.txt|uploads|css|images|js)

    # Route through index.php
    RewriteRule ^(.*)$ index.php/$1 [L]

</IfModule>

それがうまくいく場合は、あなたの ReWriteBase を修正することから始めることができると思います。

この htaccess ファイルをホストにアップロードし、デフォルトの base_url が www.example.com などに変更された場合、ReWriteBase を / に変更する必要があることに注意してください。

<?php echo base_url() ?>可能な場合は、リンクで使用することを忘れないでください。

それが役立つことを願っています。

于 2013-02-25T07:51:24.383 に答える
0

これを構成ファイルで使用します。

$config['base_url'] = 'http://'.$_SERVER['SERVER_NAME'].'/Your project folder  name';
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';

これを .htaccess で使用します

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

以下のコマンドを使用して書き換えモードを有効にします

a2enmod rewrite

また、ファイル /etc/apache2/sites-enabled/000-default を編集します

change all the AllowOverride None to AllowOverride All. 
于 2013-02-25T08:02:49.070 に答える