http : //localhost/index.php/articles/edit/1/my-first-article과 같은 URL이 .htaccess없이 어떻게 작동 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/966916

문제

나는 이것을 얻지 못한다 :

http : //localhost/index.php/articles/edit/1/my-first-article

이 URL은 예제로 언급됩니다 Kohana 프레임 워크 문서. 나는 설치의 파일을 찔렀으며, 그것과 아무 관련이없는 내 자신의 것 외에 .htaccess는 없습니다.

그렇다면 어떻게 index.php가 호출되지만 매개 변수로서 물건은 URL에 추가 된 디렉토리처럼 보일 수 있습니까? "진짜"처럼 보이지 않습니다.

아니면 이것이 기본 PHP/Apache/HTTP가 실제로 작동하는 방식입니까? 내가 이해하는 것처럼, / 항상 "이봐, 디렉토리!"라고 말하고 있습니다. 나에게 정말 말이되지 않습니다 ... 어떻게 가능합니까? 아니면 내가 볼 수 없거나 찾을 수없는 .htaccess가있는 곳이 있습니까?

도움이 되었습니까?

해결책

PHP에서는 파일 이름 다음에 데이터를 얻을 수 있습니다. $_SERVER["PATH_INFO"] 변하기 쉬운. 이를 통해 Get 변수를 사용하지 않고도 기본적으로 정보를 얻을 수 있습니다. 이는 Google과 Co가 정적 페이지를 사용하고 있다고 생각합니다. 이것은 기본적으로 대안입니다 mod_rewrite 종종 활성화됩니다 mod_rewrite 더 자주 활성화되지 않습니다.

이것은 당신에게 분명 할 수 있지만, 즉시 나에게는 아니 었습니다. 파일 이름을 사용하지 않는 한 색인 페이지에서 올바르게 작동하지 않습니다. 예를 들어, http://example.com/test/my/get/params 동안 작동하지 않습니다 http://example.com/test/index.php/my/get/params 할 것이다.

다른 팁

로부터 아파치 문서:

acceptinfo 지침

이 지침은 실제 파일 이름 (또는 기존 디렉토리의 존재하지 않는 파일)을 따르는 후행 PathName 정보가 포함 된 요청이 허용되거나 거부되는지 여부를 제어합니다. 후행 PathName 정보는 PATH_INFO 환경 변수의 스크립트에서 사용할 수 있습니다.

예를 들어, 여기에 단일 파일 만 포함 된 디렉토리를 위치 / 테스트 / 포인트로 가정합니다. html. 그런 다음 /test/here.html/more 및 /test/nothere.html/에 대한 요청을 요청합니다.

따라서이 설정은 httpd.conf와 같이 어딘가에 활성화되어 있다고 가정합니다. Mod_rewrite와 마찬가지로 여러 장소에서 활성화/구성 할 수 있습니다. 여기를 봐.

acceptinfo 서버에서 켜집니다. :)

나는 kohana를 사용하지 않으므로 내 메소드가 사용되는지 여부는 모르겠지만 서버가 .htaccess 파일 (또는 규칙을 다시 작성)을 지원하지 않으면 내 '프레임 워크'가 URI의 다음과 같이 생성됩니다.

http://www.domain.com/?/articles/edit/1/my-first-article (주목?)

개구리 프레임 워크에서 사용하는 비슷한 방법입니다. $_SERVER['REQUEST_URI'] (또는 $_SERVER['HTTP-X-REWRITE-URL'] Windows 서버에서)에서 '/'에서 폭발합니다.

이 방법은 완전히 독립적으로 다시 작성되며 여전히 더 많은 SEO 친화적 인 URI를 생성합니다.

그것이 당신에게 어떤 용도로 사용되기를 바랍니다.

아마도 여기의 경우가 아니며 확실히 권장되지 않았으며 아마도 정답이 아닐 것입니다 ...

하지만 ...

사람들이 404 페이지를 사용하여 요청을 구문 분석 한 다음 해당 정보와 함께 오른쪽 페이지를 포함하는 것을 보았습니다.

path_info를 참조하십시오 CGI 환경 변수.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top