2012-09-06 5 views
1

저는 GAE에 비교적 익숙하지 않아 URL 매핑을 이해하는 데 어려움이 있습니다.app.yaml google 앱 엔진 용 URL 구성

정적 인 데이터 집합 (HTML 템플릿, 로그인 양식, js 등) 및 동적 섹션이 있습니다. 다음과 같이

나의 현재 애플리케이션 제목이있다 : 여기

handlers: 
- url: /.* 
    static_dir: /static 
- url: /service/.* 
    script: _go_app 
    login: required 

아이디어는 http://myapp/service/foo이 앱 및 http://myapp/foo.html 같은 다른 그 어떤 노선이 /static/foo.html를 제공해야 할 것입니다. 그러나 정적 요청에서 404 오류가 발생합니다.

아이디어가 있으십니까?

답변

4

URL : URL 접두어를 당신의 핸들러를 변경합니다. 이 값은 정규 표현식 구문을 사용하므로 정규 표현식 특수 문자를 이스케이프해야하지만 그룹화를 포함해서는 안됩니다. 이 접두사로 시작하는 모든 URL은 파일 경로의 일부로 접두사 다음에 URL 부분을 사용하여이 핸들러에서 처리합니다. 귀하의 경우에는

url: /.*을 지정하고 있기 때문에, 접두사는 foo.html 될 것이며, 가져올 파일이 빈 파일 이름을 가질 것이다.

또한 핸들러는 위에서 아래로 평가되므로 순서를 변경해야합니다.

handlers: 
- url: /service/.* 
    script: _go_app 
    login: required 
- url:/
    static_dir: static 
+1

알겠습니다. 감사! – PaulProgrammer

-1

static_dir 지정 문은 주어진 정규 표현식과 일치하는 접두어 다음의 이름으로 파일을 제공합니다. RE가 .*으로 끝나면 전체 URL이 접두사로 간주되므로 파일 경로로 사용할 항목이 없습니다.

대신 url: /을 시도하십시오.

또한 핸들러는 순서대로 일치합니다.

일반 표현식 /.*은 요청을받을 수있는 모든 URL과 일치하므로 일치하지 않는 항목은 모두 일치합니다. 마지막으로 넣어.

+0

이 권장 사항에 따라 변경되었으며 이제는 다른 오류가 발생합니다. 여전히 404이지만 로그에는 다음과 같이 표시됩니다 :'[Errno 2] 해당 파일이나 디렉토리가 없습니다 : '\\ static \\ foo.html'' "/static' 아래의"정적 "디렉토리를 두어 보았습니다. 여기서 앱 스크립트는 '/hello/static'입니다. 프로젝트가 뿌리 내리고있는 곳이 확실하지 않다면 ... – PaulProgrammer

2

정적 처리기 위로 이동하지 않으면/service/handler가 호출되지 않을 가능성이 있으므로 순서가 중요합니다. 또한 404는 정적 선언에서 잘못된 구문으로 인해 발생합니다. 의 documentation에 따르면

handlers: 
- url: /service/.* 
    script: _go_app 
    login: required 
- url:/
    static_dir: static