2013-07-16 4 views
7

Ich benutze Codeigniter in lokalen WAMP. Hier funktioniert Code gut. Aber ich lade in Cpanel hoch (innerhalb von example.com, Ordner-Name 'mysite'). Es änderte ich als,CodeIgniter zeigt nur Standard-Controller

  • db_name (config/database.php)
  • db_user_name (config/database.php)
  • db_password (config/database.php)
  • base_url als http://example.com/mysite (config/config.php)
  • uri_protocol als REQUEST_URI (config/config.php)

Und änderte auch .htaccess (mysite/.htaccess) als,

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

Aber nicht in mysite/application/.htaccess. Es ist leer.

Problem ist, wenn ich http://example.com/mysite gehe, zeigt es Standardseite als richtig an. Aber wenn ich auf einen Link klicke (http://example.com/mysite/user/signin), wird dieselbe Standardseite angezeigt. aber die URL wurde geändert.

mir helfen, bitte ...

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

Können Sie uns zeigen 'config/config.php' und' config/routes.php'? – Boris

+0

@bborisovs jetzt können Sie sehen ... – KarSho

+0

wo befindet sich Ihre Anwendung, in einem Unterordner? – bottleboot

Antwort

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

Besser als:

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

Versuchen Sie Folgendes:

RewriteBase/

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

Das sieht nach der richtigen Antwort für mich aus – bottleboot

1

Wenn Sie Unterordner auf dem Server zu verwenden, das gleiche tun auf lokaler WAMP. Auf diese Weise können Sie es testen, bevor Sie es auf dem Server senden.

Ich habe CI vor langer Zeit verwendet, aber ich denke, Sie müssen mysite/ in einer Konfigurationsdatei hinzufügen.

See: Installing a CodeIgniter application in a subfolder

+0

sehen Sie meine Datei in Frage – KarSho

+1

Legen Sie Ihre Seite in 'mysite /' Ordner auf 'WAMP'. Wenn es funktioniert, ist das Problem nicht in CI. – furas

+0

Ich habe meinen Ordnernamen als mysite1 von mysite im lokalen WAMP geändert und versuche http: // localhost/mysite1 /. Es funktioniert gut. ich habe nur $ config ['base_url'] geändert \t = 'http: // localhost/mysite1 /'; – KarSho

1

.htaccess-Code

die Standardkonfiguration, dies hilft Ihnen config.php, Restore Hope.

1

Manchmal "ORIG_PATH_INFO" behebt dieses Problem. So können Sie auch wieder versuchen, mit wechselnden uri_protocol auf „ORIG_PATH_INFO“

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

und die base_url absolut sein sollten,

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

CodeIgniter kann gesagt werden, um einen Standard-Controller zu laden, wenn ein URI nicht vorhanden ist , wie es der Fall ist, wenn nur Ihre Site-Root-URL angefordert wird. So ersetzen Sie Ihre Standard-Conroller "Willkommen" mit Ihrem Conrtoller in Routen.php, kann es Ihnen helfen,

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

diese .htaccess Versuchen:

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

Auch sollten Sie Controller mit dem Namen Benutzer erstellt haben und diese Controller sollte Funktion signin ahve.

1

Ich verwendete folgende .htaccess Datei und es funktioniert für mich mit 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

entfernen

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

in Ihrer routes.php Datei. user/signin stimmt mit der oben genannten Bedingung überein, weshalb CI die Anfrage an Benutzer/Index weiterleitet, anstatt an Ihre "Benutzer" -Controller- "Anmelde" -Funktion.

Was möchten Sie mit dieser Routenkonfiguration erreichen?

1

öffnen config.php und gehen Sie wie folgt ersetzt

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

In einigen Fällen kann die Standardeinstellung für uri_protocol nicht richtig funktioniert. Ersetzen Sie einfach $ config [ 'uri_protocol'] = "AUTO" von $ config [ '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

i stand vor demselben Problem ..its aufgelöst, wenn i

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

in config.php ..try mit AUTO und PATH_INFO verwenden für den gleichen

sicher rewrite_module machen ist in Apache

1

Schreiben Sie nichts in die .htaccess -Datei und entfernen Sie $ route ['user/(: any)'] = 'user/index'; Linie und eine Sache sehr wichtig, stellen Sie sicher, dass in Ihrem Server Mod Rewrite Erweiterung sollte aktiviert werden.

kann diese Hilfe Sie How to enable mod_rewrite in php.ini on shared hosting

0

Es gibt nur wenige Dinge, die Sie berücksichtigen müssen. wenn Sie Ihr Projekt mit dem Codigniter-Framework einrichten. Folgendes ist die Datei, die Sie ändern müssen.

1) .htaccess:

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

2) Anwendung/config/config.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'] = ''; 

Hinweis: Ihre .htaccess-Datei muss im Stammverzeichnis sein. hier sollte es in sein mysite ordner

1

Ich löste das gleiche Problem, indem ich den Controller-Dateinamen ändere, um mit einem Großbuchstaben zu beginnen.

Genau wie der Standard 'Welcome' Controller heruntergeladen.

+0

Für mich war es das und die Modelle. Ansichten waren OK Kleinbuchstaben. MAMP kümmerte sich nicht um den Fall. – osxconor

0

versuchen diese

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