2013-07-16 130 views
7

我在本地使用Codeigniter WAMP。這裏的代碼工作正常。但我上傳在Cpanel(在example.com中,文件夾名稱調用'mysite')。還有我改變,CodeIgniter只顯示默認控制器

  • 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)
  • uri_protocol如REQUEST_URI(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'); 

routes.php文件

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

,你能否告訴我們'配置/ config.php'和'配置/ routes.php'? – Boris

+0

@bborisovs現在你可以看到... – KarSho

+0

你的應用程序位於子文件夾中? – bottleboot

回答

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

比 「AUTO」 :

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

試試這個:

RewriteBase/

RewriteEngine on 
RewriteCond $1 !^(index\.php|images|robots\.txt) 
RewriteRule ^(.*)$ /mysite/index.php/$1 [L] 
+0

這看起來像對我來說是正確的答案 – bottleboot

1

如果您打算在服務器上使用的子文件夾中做同樣的在當地的WAMP。通過這種方式,您可以在將其發送到服務器之前進行測試。

我很久以前使用CI,但我認爲你必須在某些配置文件中添加mysite/

參見:Installing a CodeIgniter application in a subfolder

+0

看到我的文件有問題 – KarSho

+1

把你的頁面放在'WAMP'的mysite /'文件夾中。如果它會工作的問題不在CI中。 – furas

+0

我在本地WAMP中將我的文件夾名稱更改爲mysite1,並嘗試使用http:// localhost/mysite1 /。它工作正常。我只改變了$ config ['base_url'] \t ='http:// localhost/mysite1 /'; – KarSho

1

的.htaccess代碼

恢復默認的配置,以config.php文件,希望這有助於你。

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php/$0 [PT,L] 
1

有時「ORIG_PATH_INFO」解決了這個問題。所以,你也可以改變uri_protocol再次嘗試「ORIG_PATH_INFO」

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

和 的BASE_URL應該是絕對的,

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

笨可以告訴加載默認控制器當URI不存在,就像只有你的網站根URL被請求的情況一樣。所以一旦你的默認控制器'welcome'替換爲你的控制器在路由中。PHP的,它可以幫助你

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> 
1

試試這個htaccess的:

RewriteEngine on 
RewriteCond $1 !^(index\.php|images|robots\.txt) 
RewriteRule ^(.*)$ /mysite/index.php/$1 [L] 

你也應該創建一個名爲控制器的用戶和這個控制器應該ahve功能登入。

1

我使用下面的.htaccess文件,它適用於我與cpanel。

# index file can be index.php, home.php, default.php etc. 
DirectoryIndex index.php 

# Rewrite engine 
RewriteEngine On 

# condition with escaping special chars 
RewriteCond $1 !^(index\.php|robots\.txt|favicon\.ico) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA] 
1

在routes.php文件文件中刪除

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

。用戶/登錄符合上述條件,這就是爲什麼CI將請求路由到用戶/索引而不是您的「用戶」控制器「登錄」功能。

你想通過該路由配置實現什麼?

1

打開config.php文件,並做以下內容替換

$config['index_page'] = "index.php" 
to 
$config['index_page'] = "" 

在某些情況下,uri_protocol默認設置無法正常工作。 只需更換 $配置[ 'uri_protocol'] =通過 $配置[ 'uri_protocol'] = 「REQUEST_URI」

的.htaccess

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

當我使用自動和PATH_INFO爲同一

在config.php ..try使用

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

確保rewrite_module我面臨解決同一個問題..its是在阿帕奇

0

還有,你必須考慮幾件事情。當你用codigniter框架設置你的項目。以下是您必須進行更改的文件。

1)的.htaccess:

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

2)應用程序/配置/配置。PHP

$config['base_url'] = 'http://example.com/mysite/'; 
$config['server_root'] = $_SERVER['DOCUMENT_ROOT']; 
$config['index_page'] = ''; 
$config['uri_protocol'] = 'AUTO'; 

3)的application/config/database.php中

$db['default']['hostname'] = 'localhost'; // set your hostname 
$db['default']['username'] = 'root'; // set database username 
$db['default']['password'] = 'root'; //set database password 
$db['default']['database'] = 'XYZ'; //set your database name 
$db['default']['dbdriver'] = 'mysql'; 

4)的application/config/routes.php文件

$route['default_controller'] = "user"; //your default controller 
$route['404_override'] = ''; 

注:.htaccess文件必須位於根目錄中。在這裏它應該在mysite文件夾

1

我解決了同樣的問題,通過更改控制器文件名以大寫字母開頭。

就像下載的默認「歡迎」控制器一樣。

+0

對我來說,它是和模型。視圖是小寫的。 MAMP不關心案件。 – osxconor

0

試試這個

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

Httaccess

<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>