작성
·
643
답변 7
1
찾았습니다. 아파치에서 돌릴 떄 $_SERVER 배열에 PATH_INFO 가 없을 수도 있습니다. 라우팅을 매치 할때 PATH_INFO 를 사용해서 그럴 수도 있습니다. 이를 REQUEST_URI 로 변경하고 해보시기 바랍니다. 이는 Eclair\Http\Reqeust::getPath() 부분입니다. 아파치 설정은 위에 올려드린 그대로 사용해도 괜찮습니다.
public static function getPath()
{
// return $_SERVER['PATH_INFO'] ?? '/';
return explode('?', $_SERVER['REQUEST_URI'])[0];
}
1
웹 서버에서 라우팅을 동작시킬 때는,
모든 라우트에 대해서 하나의 리퀘스트 경로로 인식하도록 설정해줄 필요가 있을 것입니다.
아래의 코드는 라라벨 프로젝트에 있는 웹서버 설정, .htaccess 파일을 가져온 것입니다.
모든 요청이 index.php(/) 로 인식해야 라우트가 동작할 것입니다.
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
0
0
와 진짜 감사합니다. 보내주신데로 하니까 해결됐습니다.
저같은 사람 계속 생길 것 같은데 공지로 올려주시면 아주 좋을 것 같아요~ 앞으로도 좋은 강의 부탁드리겠습니다. =)
0
0
0
저는 질문 작성자님과 같이 무한 루프 현상은 없었지만 URL PATH에 따른 화면 처리를 잘 못하였습니다.
해당 질문에 대한 강사님의 답변을 통해 해결하게 되었고, 제공해주신 소스코드를 좀 더 변경해 보았습니다. 아래를 참고하시면 될 것 같습니다.