작성
·
360
0
안녕하세요, 선생님!
'나만의 프레임워크 만들기' 파트 중 라우팅 강의의 코드를 카피코딩하면서 수강하던 중에, 경로관련 문제가 생긴 것 같습니다.
localhost/로 $path값을 ' / '로 던져주었을 경우에는 정상적으로 작동하는데,
localhost/posts/1로 접속할 경우에는 not found에러가 뜨네요...
확인해보니, http_response_code(404)의 원인은 아니더라구요...ㅜㅜ
답변 1
0
웹서버에 따라 설정이 달라서 그럴 수 있습니다. 강의의 경우에는 개발용 php 내장 웹서버를 쓰지만, 아파치와 같은 상용 웹 서버는 별도로 모든 요청을 '/' 로 처리하도록 설정해야 할 수도 있기 때문이죠. .htaccess 의 다음과 같은 설정입니다.
<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>
아파치와 내장 웹서버는 일부 동작이 다를 수 있기 때문에 강의에서 사용하는 서버 및 환경과 동일한 환경에서 실습 하는 것을 권장드리고 있습니다. 이 문제에 대한 또 다른 답변인 다음의 질의응답을 참고하셔도 됩니다.
https://www.inflearn.com/questions/52447/apache%EC%97%90-%EC%98%AC%EB%A6%B4%EA%B2%BD%EC%9A%B0