많은 사이트를 이전에서 새 서버 구성으로 마이그레이션하는 중입니다. 각 사이트는 mod_rewrite URL을 사용하는 유사한 (그러나 슬프게도 동일하지 않은) 코드베이스를 기반으로합니다.
- 우분투 8.04 LTS => 우분투 12.04 LTS
- 아파치 2.22.8 => 아파치 2.2.22
- PHP 5.2 (FastCGI) => PHP 5.3 (PHP5-FPM)
대부분 매력처럼 작동하지만 새 구성에서는 $ _SERVER [ 'REDIRECT_URL']이 더 이상 설정되지 않으며이 전역 변수에 의존하여 코드가 실패합니다.
내가 이해 한 바에 따르면,이 변수는 리디렉션이 발생할 때 Apache에 의해 설정됩니다. 분명히 이것은 지금 일어나고 있지 않지만 원인을 찾기 위해 고심하고 있습니다.
- Apache 업그레이드입니까, 아니면 PHP FastCGI에서 PHP5-FPM으로의 전환입니까?
- 이 변수를 어떻게 되 찾을 수 있습니까?
실제로 각 사이트에서 코드를 편집 할 필요가 없으므로 필요한 경우 전역 PHP auto_prepend를 설정하지만 서버 구성을 수정하여 처음에 설정하는 것이 이상적입니다.
잠재적으로 관련 : 이제 REDIRECT_SCRIPT_URL 및 REDIRECT_REDIRECT_SCRIPT_URL이라는 두 개의 새로운 $ _SERVER 변수가 있습니다. 이것들은 내가 REDIRECT_URL에 대해 올바른 데이터를 가지고있는 것처럼 보이지만 이전에는 없었던 두 가지 내부 리디렉션이 발생했음을 나타냅니다 .Google은 REDIRECT_REDIRECT_SCRIPT_URL을 검색하면 임의의 var_dump 출력 만 반환합니다. SCRIPT_URL이 새로운 REDIRECT_URL입니까?
편집 1
다시 확인하면 REDIRECT_URL은 (현재) 설정되지만 항상 예상 입력 유형 URL 대신 'index.php'(mod_rewrite 대상)로 설정됩니다. PHP auto_prepend_file을 사용하여 필요한 변수를 수동으로 설정했습니다.
처음으로 어떻게 그리웠는지 모르겠지만 그 동안 몇 가지 변경 사항을 적용하여 외부 기회가 없을 것이라고 생각합니다. 이것이 누군가를 오도하는 경우 사과드립니다.
편집 2
아래 ErrorDocument에 대한 언급을 해결하기 위해 사용중인 mod_rewrite 규칙은 다음과 같습니다.
RewriteRule ^(.*)$ /index.php?url=$1 [QSA,L]
$ _GET [ 'url'] 변수가 설정되었으므로 규칙이 작동해야합니다.
분명히하기 위해이 단계에서 처음 언급 한 auto_prepend_file 해결 방법을 사용했습니다.