문제

Mod_rewrite를 사용하여 SEO URL을 생성하고 있습니다. 기본적으로 다음은 다음과 같은 방식으로 작동합니다. 모든 요청은 .htaccess에 의해 잡히고 PHP 스크립트로 리디렉션됩니다 (transform.php라고 가정 해 봅시다). transport.php는 SEO URL을 파싱하고이를 일반 URL로 변환 한 다음 Index.php를 포함한 다음 Application (Index.php 's) 출력을 포착하고 Regex를 사용하여 모든 일반 URL을 SEO URL로 변환합니다. 따라서 중요한 단계는 모든 요청을 Transform.php를 통과하게하는 것입니다. 내 .htaccess는 다소 길지만 다음 줄로 제한했습니다.

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine on

    RewriteRule ^index\.php?(.*)$ ./transform.php?p=$1&%{QUERY_STRING} [L]

</IfModule>

문제는 초기 (루트) URL에서 발생합니다. http://mysite.com/. 내가 입력 할 때 http://mysite.com/ 그리고 사이트는 내 로컬 컴포지션에 위치하고 있으며 모든 것이 잘 작동합니다. http://mysite.com/ .htaccess에 의해 잡히고 추가 처리를 위해 transform.ph로 보냈습니다. 그러나 다른 서버 에서이 줄은 작동하지 않습니다 ( http://mysite-other-server.com/). 이 .htaccess 줄은 단순히 요청을 포착하지 않습니다. 모든 것이 잘 작동합니다 http://mysite-other-server.com/index.php 그렇지만.

또한이 두 번째 서버에는 여러 사이트가 있으며 일부 사이트는 작동하지만 일부는 그렇지 않습니다. 그들 중 일부에게는 URL이 먼저 해결되었습니다. http://mysite-other-server.com/index.php 그런 다음 .htaccess로 처리하고 다른 사람들의 경우 URL이 해결되지 않고 .htaccess가 처리합니다. http://mysite-other-server.com/

나는 매우 혼란스럽고 행운없이 인터넷 검색을 시도했습니다. 모든 도움은 높이 평가됩니다.

도움이 되었습니까?

해결책

Apache가 .htacces 파일을 수락하지 않도록 구성되어 있다고 가정합니다.

allowoverride 설정을 사용하여 HTTPD 구성에서 활성화해야합니다.

http://httpd.apache.org/docs/2.0/mod/core.html#allowoverride

또 다른 가능성은 프로덕션 서버가 mod_rewrite를로드하지 않았으며,로드 모드 지침을 확인하십시오.

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