inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

PHP 7+ 프로그래밍: 객체지향

26 - 라우팅 (Routing; Route, Middleware, RequestContext)

apache에 올릴경우

826

SungJong Kim

작성한 질문수 2

1

강의 잘보고 있습니다.

해당 소스로 아파치 서버에 적용할 경우 별도 서버 세팅이 필요한 것 같은데요.

그냥 올렸더니 라우팅이 전혀 동작을 안하네요.

어떤 세팅을 하면 적용할 수 있을까요?

답변 부탁드리겠습니다.

감사합니다.

oop php

답변 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];
}

0

Henu

저는 질문 작성자님과 같이 무한 루프 현상은 없었지만 URL PATH에 따른 화면 처리를 잘 못하였습니다.

해당 질문에 대한 강사님의 답변을 통해 해결하게 되었고, 제공해주신 소스코드를 좀 더 변경해 보았습니다. 아래를 참고하시면 될 것 같습니다.

0

정상우

@Henu 역시! 적절한 변경입니다. 이렇게 처리하면 아파치에서도, 내장서버에서도 문제가 발생하지 않겠군요 👍

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

SungJong Kim

와 진짜 감사합니다.  보내주신데로 하니까 해결됐습니다.

저같은 사람 계속 생길 것 같은데 공지로 올려주시면 아주 좋을 것 같아요~ 앞으로도 좋은 강의 부탁드리겠습니다. =)

0

SungJong Kim

아니요 내장서버에서는 전부 잘 동작하고 있습니다.

0

정상우

PHP 내장 웹서버를 동작할 때도 무한 루프에 빠지시나요?
일단, 핵심은 모든 리퀘스트 요청에 대해 루트 경로로 이동시켜야 한다는 점인데 .. 흠

0

SungJong Kim

빠른 답변 감사드립니다.

그런데 보내주신 내용으로 이미 적용해봣었는데 이동 무한루프에 빠지고 있습니다.

패케지스트를 하지 않고 섹션7을 수행할수 있나요

0

90

1

나만의 프레임워크 작성 후, 운영환경 배포에 관한 문의 드려요

0

400

1

35강 미들웨어에서 인증 과정을 Auth클래스로 만들면, 어느 디렉토리에 둘까요?

0

335

1

ios환경에서는 어떻게 설치해야 하나요?

0

447

1

라라벨(php) 배포 문의

0

1652

1

왜 http://localhost/ 로 접근하면 public/index.php 가 실행되나요?

0

2102

1

http://localhost:8080/posts/1 접근시 배열 0값 표기 오류

0

397

1

xdebug 설치

0

668

1

localhost 경로

0

441

1

class not found

1

328

1

namespace class not found 질문

0

466

1

csrfmiddelware 에러 질문입니다

0

363

2

url Parttern Parts 가 무슨뜻인가요?

0

349

1

통합 개발환경 (IDE) 관련 문의

0

247

1

Route 클래스 질문이 있습니다!

0

297

1

모델 User 등에서 속성들을 protected 나 private 으로 설정하지 않는 이유가 있습니까?

0

340

1

안녕하세요 프로젝트를 react와 연동하기에 대해서 여쭈고 싶습니다 :)

1

1377

1

DatabaseSessionHandler.php 에러 해결 부분

0

298

1

안녕하세요. 라우터 서버 연결 질문이 있습니다.

1

281

1

아니 강사님 왜 자꾸 어어 거려요? 진짜 겁나 거슬려 죽겠네 ㅡㅡ 어좀 적당히해요 거슬려 죽겠네 그리고 마이크 좀 좋은거 쓰세요 볼륨이 낮아졌다 커졌ㄷ ㅏ하고 발음도 다뭉개져지고 딕션도 안 좋아서 하나도 안들려요 진짜 개짜증나네

1

572

2

로컬환경에서 개발 후 운영환경으로 배포 시 발생하는 이슈에 대한 문의입니다.

1

575

2

DatabaseSessionHandler 클래스의 gc($maxlifetime) 메소드에 대해 질문드립니다.

2

258

1

Xdebug 설치 후 php index.php 실행하면 오류가 납니다..!

0

1135

1

CentOS 7.* 서버쪽으로 배포를 해보던 중에 질문드립니다.

1

369

1