PHP 내장형 웹 서버의 리디렉션 향상
다음은 예시 URL입니다.
http://localhost:8009/url.target/www.google.com
이 URL은nginx와apache에서 매우 잘 실행됩니다.그러나 내장된 php 서버는 URL에서 점/소수/마침표를 볼 때 이 파일을 찾으려고 시도합니다.따라서 PHP 내장 웹 서버에서 이 URL에 액세스를 시도하면 다음과 같은 결과가 발생합니다.url.target/www.google.com was not found on this server
내장 서버의 기본 동작을 변경하는 방법은 사용자 정의 공유기 스크립트를 추가하는 것입니다.인터넷에 올라온 댓글에서 이걸 찾았어요...수차례의 검색을 거치다.<?php
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
if (file_exists($_SERVER['DOCUMENT_ROOT'] . $path)) {
return false;
} else {
$_SERVER['SCRIPT_NAME'] = 'index.php';
include './public/index.php';
}
한 서버에서 API/를 실행 중입니다.공용 폴더, 인덱스.php, 위 코드에서 보듯이.이 스크립트는 요청한 URL에 실제 파일이 있는지 확인합니다. 존재하지 않으면 기본적으로 공공/index로 바꿉니다.php, 이것이 바로 우리가 원하는 것입니다.그러나 공유기를 추가하면 php 처리 경로가 바뀌기 때문에 다음 코드가 있습니다.
require '../flight/Flight.php';
라우터를 더 이상 사용하지 않습니다.php가 작동하고 있습니다.다음과 같이 변경해야 합니다.require __DIR__ . '/../flight/Flight.php';
현재 내장된 웹 서버를 실행하고 있습니다. 공유기를 기억하십시오.php 파일은 프로젝트 루트 디렉터리에 있습니다. 루트 디렉터리에서 실행합니다.php -S 0.0.0.0:8009 -t public router.php
(나는 0.0.0.0을 더 좋아한다. 이렇게 하면 나는 같은 랜에서 휴대전화를 통해 이 사이트를 방문할 수 있다)같은 문제에 부딪힐 수 있는 다른 사람들을 도울 수 있기를 바란다.
Reference
이 문제에 관하여(PHP 내장형 웹 서버의 리디렉션 향상), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/crazedvic/improving-redirects-in-php-built-in-webserver-489d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)