방금 라 라벨 프레임 워크를 배우기 시작했는데 라우팅에 문제가 있습니다.
작동하는 유일한 경로는 기본적으로 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 설치에서 다음 두 가지 변경 사항으로이 문제를 해결했습니다.
- 아파치 서버에서 mod_rewrite를 활성화합니다 :
sudo a2enmod rewrite
. - /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());