[php] 내 경로가 404를 반환합니다. 어떻게 해결할 수 있습니까?

방금 라 라벨 프레임 워크를 배우기 시작했는데 라우팅에 문제가 있습니다.

작동하는 유일한 경로는 기본적으로 Laravel에 연결된 기본 홈 경로입니다.

Windows에서 WAMP를 사용하고 있으며 PHP 5.4.3 및 Apache 2.2.22를 사용하고 있으며 mod_rewrite도 활성화하고 application.php 구성 파일에서 ‘index.php’를 제거하여 빈 문자열을 남겨 둡니다.

User 라는 새 컨트롤러를 만들었습니다 .

class User_Controller extends Base_Controller {

    public $restful = true;

    public function get_index() 
    {
        return View::make('user.index');
    }
}

몇 가지 기본 HTML 코드를 사용하여 application / views / user /에 index.php 라는 뷰 파일을 만들었 으며 route.php에 다음을 추가했습니다.

Route::get('/', function () {
    return View::make('home.index');
});

Route::get('user', function () {
    return View::make('user.index');
});

http://localhost/mysite/public웹 브라우저에서 루트 ( )를 방문하면 첫 번째 경로가 제대로 작동하지만 두 번째 경로로 이동하려고 http://localhost/mysite/public/user하면 404 찾을 수 없음 오류가 발생합니다. 왜 이런 일이 일어날까요?



답변

대신 경로 파일에 이것을 추가해 보셨습니까 Route::get('user', "user@index")?

전과 텍스트의 단편은 @, user이 경우, 사용자 제어 및 후 텍스트의 부분 페이지를 지시한다 @, index상기 스크립트에 지시한다 user기능 public function get_index().

을 (를) 사용 $restful하고있는 것을 확인 Route했습니다 Route::any('user', 'user@index'). 이 경우을로 설정할 수 있습니다 . 이것은 둘 다 따로 작성하는 대신 POST및 둘 다 처리합니다 GET.


답변

Ubuntu LAMP 설치에서 다음 두 가지 변경 사항으로이 문제를 해결했습니다.

  1. 아파치 서버에서 mod_rewrite를 활성화합니다 : sudo a2enmod rewrite.
  2. /etc/apache2/apache2.conf를 편집 하여 / var / www 디렉토리 (내 기본 문서 루트)에 대한 “AllowOverride”지시문을 변경합니다.AllowOverride All

그런 다음 Apache 서버를 다시 시작합니다. service apache2 restart


답변

WAMP를 사용하여 wamp 아이콘-> apache-> apache 모듈-> 스크롤 및 rewrite_module 확인 LoadModule 다시 시작 rewrite_module

“rewrite_module”을 활성화하면 서버 응용 프로그램이 자동으로 다시 시작됩니다.


답변

다음 사항을 확인하려고 했습니까?

http://localhost/mysite/public/index.php/user 

일하고 있었습니까? 그렇다면 모든 경로의 폴더에 대문자가 없는지 확인하십시오. 나는 같은 상황이었고 문자를 소문자로 변환하는 것이 도움이되었습니다.


답변

EasyPHP를 사용하여 동일한 문제가 발생했습니다. AllowOverride All에서 내 <Directory>블록에 지정해야 함을 발견 했습니다 httpd.conf. 이것이 없으면 Apache는 때때로 .htaccess.

내 것이 이렇게 생겼어 …

<Directory "D:/Dev">
    Options FollowSymLinks Indexes
    #### NEXT IS THE CRUCIAL LINE ####
    AllowOverride All
    Order deny,allow
    Allow from 127.0.0.1
    Deny from all
    Require all granted
</Directory>


답변

이동 root/public/.htaccess을 시도 할 수 root/.htaccess있으며 작동합니다.


답변

노선

컨트롤러에서 관리하지 않는 특정 경로를 정의하는 데 사용합니다.

컨트롤러

전통적인 MVC 아키텍처를 사용하고 싶을 때 사용하십시오.

문제에 대한 해결책

컨트롤러 작업에 대해 특정 ‘명명 된’경로를 원하지 않는 한 컨트롤러를 경로로 등록하지 않습니다.

컨트롤러 작업에 대한 경로를 생성하는 대신 컨트롤러를 등록하기 만하면됩니다.

Route::controller('user');

이제 컨트롤러가 등록되어, 당신은 탐색 할 수 있습니다 http://localhost/mysite/public/user당신이 get_index실행됩니다.

한 번에 모든 컨트롤러를 등록 할 수도 있습니다.

Route::controller(Controller::detect());