-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
apache에 올릴경우
20.08.17 15:48 작성 조회수 338
1
강의 잘보고 있습니다.
해당 소스로 아파치 서버에 적용할 경우 별도 서버 세팅이 필요한 것 같은데요.
그냥 올렸더니 라우팅이 전혀 동작을 안하네요.
어떤 세팅을 하면 적용할 수 있을까요?
답변 부탁드리겠습니다.
감사합니다.
답변을 작성해보세요.
1
정상우
지식공유자20.08.17 17:37
찾았습니다. 아파치에서 돌릴 떄 $_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
정상우
지식공유자20.08.17 15:59
웹 서버에서 라우팅을 동작시킬 때는,
모든 라우트에 대해서 하나의 리퀘스트 경로로 인식하도록 설정해줄 필요가 있을 것입니다.
아래의 코드는 라라벨 프로젝트에 있는 웹서버 설정, .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

SungJong Kim
질문자20.08.17 17:40
와 진짜 감사합니다. 보내주신데로 하니까 해결됐습니다.
저같은 사람 계속 생길 것 같은데 공지로 올려주시면 아주 좋을 것 같아요~ 앞으로도 좋은 강의 부탁드리겠습니다. =)
0
0
정상우
지식공유자20.08.17 16:07
PHP 내장 웹서버를 동작할 때도 무한 루프에 빠지시나요?
일단, 핵심은 모든 리퀘스트 요청에 대해 루트 경로로 이동시켜야 한다는 점인데 .. 흠
0
답변 7