2017-09-21 2 views
0

모든 전화를 하나의 디렉토리에 하나의 단일 스크립트로 라우팅하려고 할 때 mod_rewrite에 문제가 있습니다. 이 간단한 규칙은 리눅스에서 일하는 :Mac OSX에서 Mod Rewrite Sierra

RewriteRule의의 *의 api.cgi 오류 로그에서

를이 OS에서이 내가 얻을 "RewriteRule의 : 정규 표현식을 컴파일 할 수 없습니다 '*'".

다른 것들을 시도해 보았습니다. mod 재 작성은 일부 일치 항목에서 작동하지만 디렉토리 경로가 아닌 파일명에서만 작동합니다.

예 : RewriteRule. * api.cgi - 파일 이름이있는 파일을 api.cgi로 라우트하여 api.cgi가 작동하고 있음을 증명하지만 api.cgi로/api/config/경로를 지정하려고합니다. 나는 /api/config/something.symething 만 실제로 재 작성을 강제하는 것처럼 보일 수 있습니다 - 즉, 파일 이름이 필요합니다.

아이디어가 있으십니까? 나는 말 그대로 얼마나 많은 디렉토리가 깊든 지 또는 파일의 끝에 파일 이름이 있는지 여부에 관계없이이 디렉토리에서 호출되는 모든 것을 절대 api.cgi로 라우팅하려고합니다.

감사합니다, 매트

당신이 사용할 수있는

답변

0

:

RewriteRule^api.cgi 

을하지만 많은 테스트를 수행 한 경우 일반적으로 결과가 정확히

RewriteRule .* api.cgi 

와 같은, 그것은 가능성이있다 그것은 캐시 문제입니다. 캐시를 지우거나 다른 브라우저를 사용해보십시오.

+0

감사하지만 여전히 동일한 문제가 있습니다. RewriteRule^api.cgi와 RewriteRule. * api.cgi는 모두 a와 함께 리디렉션합니다. 파일 경로 일뿐입니다. 따라서 /api/config.html은/api/config로 리디렉션됩니다. 리디렉션되지만/api/config는 그렇지 않습니다. 주어진 오류 메시지는 표준입니다. 요청한 URL/~ username/cgi-bin/api2/config를이 서버에서 찾을 수 없습니다. 분명히 URL은 없지만 404 대신 리디렉션되어야합니다. –

+0

아니요, 정규 표현식 '. *': 별표는 이전 요소가 0 번 이상 나오는 것을 나타냅니다. 그리고'.' 하나의 문자와 일치합니다. https://en.wikipedia.org/wiki/Regular_expression – Croises

+0

문제는 귀하의 CGI에 있다고 생각합니다. – Croises