2009-11-03 28 views
7

ja jechałem przez oficjalnego tutoriala codeigniter kiedy uderzył w przeszkodę ...codeigniter Funkcja połączeń 404

tutorial kazał mi zapisać i uruchomić ten kod:

<?php 
class Blog extends Controller { 

    function index() 
    { 
     echo 'Hello World!'; 
    } 

    function comments() 
    { 
     echo 'Look at this!'; 
    } 
} 
?> 

IF I wprowadź następujący adres URL:

index.php/blog

to działa i wyświetla "Hello World!".

Kiedy zmodyfikować URL, aby wyświetlić komentarze następująco:

index.php/blog/comments/

dostaję 404.

+0

Czy używałeś jakiegoś rodzaju Routingu? lub Mod_rewrite? Poza tym, nie mogę sprawić wrażenia, jak to działa. [1]: http://codeigniter.com/user_guide/general/routing.html –

+0

To prawie na pewno problem z routingiem. Upewnij się, że nie masz żadnych tras catch-all z poprzednich kroków w instrukcji obsługi. Jeśli posiadasz jakieś catch-ally, nie będzie on poprawnie kierował do kontrolera. – treeface

Odpowiedz

1

Domyślnie przykład powinien działać. Sprawdź konfiguracje i usuń .htaccess, ponieważ twój przykład nie używa mod_rewrite.

Zacznij od zera także pomaga uczyć się;)

2

jeśli dodasz? po index.php to działa?

http://example.com/index.php?/blog/comments 
0

Miałem ten sam problem. Skończyło się na tym, że nigdy nie zamknąłem swojej pierwszej funkcji - zostawiłem ostatnią}. Więc funkcja, której nie zamknęłam, działała dobrze, ale wszystko po tym wszystkim dało mi 404.

1

Zawsze warto wypróbować niektóre z opcji $ config ['uri_protocol'] w aplikacji/config/config.php.

/* 
|-------------------------------------------------------------------------- 
| URI PROTOCOL 
|-------------------------------------------------------------------------- 
| 
| This item determines which server global should be used to retrieve the 
| URI string. The default setting of "AUTO" works for most servers. 
| If your links do not seem to work, try one of the other delicious flavors: 
| 
| 'AUTO'   Default - auto detects 
| 'PATH_INFO'  Uses the PATH_INFO 
| 'QUERY_STRING' Uses the QUERY_STRING 
| 'REQUEST_URI'  Uses the REQUEST_URI 
| 'ORIG_PATH_INFO' Uses the ORIG_PATH_INFO 
| 
*/ 
$config['uri_protocol'] = 'AUTO'; 

Niektóre serwery mają problemy z różnymi opcjami, więc wypróbuj je ręcznie. To może nie działać w twoim przypadku, ale w przeszłości zaoszczędził mi dzień.

2

Natrafiłem na ten stary post bez dobrej odpowiedzi na pytanie, dlaczego tak się dzieje. Również natknąłem się na ten sam oczywisty błąd, który popełniłeś i próbowałeś go naprawić. Zdałem sobie sprawę, że problem pochodzi z routingu, który został ustawiony we wcześniejszych przykładach CI. Moja strona nie działa w ogóle, chyba że dodany następujący wiersz wewnątrz config/routes.php:

$['blog'] = 'blog'; 

To właśnie z powodu tej linii, które uzna za coś innego niż to, co już zaszło, jako argumenty za root:

$route['(:any)'] = 'pages/view/$1'; 

Jeśli usuniesz powyższą linię, to będzie cała praca, z wyjątkiem korzenia nie będzie już pracować tak jak w poprzednich tutoriali. Musiałem też dodać następującą linię tak, że możemy wywoływać funkcje wewnątrz sterownika:

$route['blog/(:any)'] = 'blog/$1'; 

z oboma tymi dwoma dodany, można wywołać funkcji na korzeniu i jeszcze mieć również pracuje „blog” kontrolera.

0

W niektórych wersjach CodeIgniter imię i nazwisko kontrolera (nazwa pliku) musi zaczynać się literą

np ..

Blog.php 

jeśli pierwsza litera pliku nie jest kapitałem, może to oznaczać błąd 404.