10

Local WAMP で Codeigniter を使用しています。ここでコードは正常に動作しています。しかし、私は Cpanel でアップロードします (example.com 内、フォルダー名は ' mysite' を呼び出します)。そこで私は次のように変わりました。

  • db_name (config/database.php)
  • db_user_name (config/database.php)
  • db_password (config/database.php)
  • base_url としてhttp://example.com/mysite (config/config.php)
  • REQUEST_URI としての uri_protocol (config/config.php)

また、.htaccess(mysite/.htaccess)を次のように変更しました。

<IfModule mod_rewrite.c>

RewriteEngine On

# Set the rewritebase to your CI installation folder
RewriteBase /mysite/


# Send everything to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

しかし、 mysite/application/.htaccess にはありません。空っぽです。

問題は、http://example.com/mysiteに行くと、デフォルトのページが正しく表示されることです。しかし、リンク ( http://example.com/mysite/user/signin ) をクリックすると、同じデフォルト ページが表示されます。ただし、URLは変更されています。

お願い助けて...

config.php

$config['base_url'] = 'http://example.com/mysite';
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';
$config['url_suffix'] = '';
$config['language'] = 'english';
$config['charset'] = 'UTF-8';
$config['enable_hooks'] = FALSE;
$config['subclass_prefix'] = 'MY_';
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
$config['allow_get_array']      = TRUE;
$config['enable_query_strings'] = FALSE;
$config['controller_trigger']   = 'c';
$config['function_trigger']     = 'm';
$config['directory_trigger']    = 'd';
$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_expire_on_close'] = FALSE;
$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['cookie_secure']    = FALSE;
$config['global_xss_filtering'] = FALSE;
$config['csrf_protection'] = FALSE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;
$config['compress_output'] = FALSE;
$config['time_reference'] = 'local';
$config['rewrite_short_tags'] = FALSE;
$config['proxy_ips'] = '';
define('CSS_FOLDER' , 'application/assets/css');
define('DEFAULT_IMAGE_URL' , 'application/assets/images/default');

ルート.php

$route['default_controller'] = "welcome";
$route['404_override'] = '';
$route['user/(:any)'] = 'user/index';
4

15 に答える 15

7
$config['base_url'] = 'http://example.com/mysite/';

より良い :

$config['base_url'] = 'http://example.com/mysite';

これを試して :

RewriteBase /

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /mysite/index.php/$1 [L]
于 2013-07-26T08:23:49.450 に答える
4

私は同じ問題に直面していました..使用すると解決しました

$config['uri_protocol'] = 'AUTO'; 

config.php で ..同じものに AUTO と PATH_INFO を使用してみてください

Apacheでrewrite_moduleがオンになっていることを確認してください

于 2013-07-26T13:20:59.260 に答える
3

.htaccess コード

デフォルトの構成を config.php に復元します。これがお役に立てば幸いです。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
于 2013-07-23T09:55:46.080 に答える
1

削除する

$route['user/(:any)'] = 'user/index';

あなたの routes.php ファイルに。user/signin は上記の条件に一致します。そのため、CI は "User" コントローラーの "signin" 関数ではなく user/index にリクエストをルーティングします。

そのルート構成で何を達成しようとしていますか?

于 2013-07-25T11:24:17.527 に答える
1

「ORIG_PATH_INFO」がこの問題を解決する場合があります。したがって、uri_protocol を「ORIG_PATH_INFO」に変更して再試行することもできます。

$config['uri_protocol'] = "ORIG_PATH_INFO";

base_url は絶対でなければなりません。

$config['base_url'] = "http://example.com/mysite/";
于 2013-07-23T11:32:32.923 に答える
1

.htaccess ファイルには何も書き込まず、 $route['user/(:any)'] = 'user/index'; を削除してください。行と非常に重要なことの1つは、サーバーのmod書き換え拡張機能で有効にする必要があることを確認してください。

共有ホスティングでphp.iniでmod_rewriteを有効にする方法

于 2013-07-28T04:34:39.207 に答える
1

サーバーでサブフォルダーを使用する場合は、ローカル WAMP で同じことを行います。これにより、サーバーに送信する前にテストできます。

私はずっと前にCIを使用していましたが、mysite/構成ファイルを追加する必要があると思います。

参照: CodeIgniter アプリケーションをサブフォルダーにインストールする

于 2013-07-16T13:11:32.877 に答える
1
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
于 2013-07-23T13:10:06.323 に答える
1

コントローラーのファイル名を大文字で始めるように変更することで、同じ問題を解決しました。

ダウンロードされたデフォルトの「ようこそ」コントローラーと同じように。

于 2015-06-29T16:34:29.170 に答える
1

CodeIgniter は、サイトのルート URL のみが要求された場合のように、URI が存在しない場合にデフォルトのコントローラーをロードするように指示できます。あなた

于 2013-07-23T12:50:14.147 に答える
0

これを試して

$config['uri_protocol'] = 'PATH_INFO';
$config['enable_query_strings'] = FALSE;

Httpアクセス

<IfModule mod_rewrite.c>
RewriteEngine On

#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [NC]
</IfModule>
于 2017-03-11T04:51:09.057 に答える