2010-02-05 6 views
1

일부 URL 재 작성 마법에 대한 도움을 받고 싶습니다. Request_URI 변수를 수정하는 데 문제가 있습니다.Apache 또는 PHP를 사용하여 Request_URI를 수정하려면 어떻게해야합니까?

두 사이트 http://host.com/alphahttp://host.com/beta 사이를 전환하고 싶습니다. 그들은 모두 동일한 PHP 스크립트에 의해 처리됩니다. 이 스크립트는 http://host.com/index.php입니다.

index.php는 표시 할 사이트를 알려주는 GET 변수 SITE이 있어야합니다. 또한 REQUEST_URI를 사용하여 표시 할 내용을 결정합니다. 이 기능을 사용하려면 알파 또는 베타을 원래 요청에서 삭제해야합니다. 이것은 내가 붙어있는 곳이다.

따라서 REQUEST_URI는/alpha/content/file에서 시작하며/content/file이되어야합니다.

나는 htaccess로이 사용 mod_rewrite를 시도했습니다 :

RewriteCond %{REQUEST_URI} /(alpha|beta)(.*) 
RewriteRule .* index.php?site=%1 

의 index.php를 : 나는 아파치한다 SetEnvIf와 별칭으로 더 나은 운이를 바라고

<?php 
echo "Site: " . $_GET['site'] . "<br/>"; 
echo "Request_URI: " . $_SERVER['REQUEST_URI'] . "<br/>"; 
//get_html($_SERVER['REQUEST_URI']); 
?> 

.

이 작업을 수행하는 방법에 대한 아이디어는 크게 감사하겠습니다. 감사.

답변

2

관리가 아주 쉬운 :

RewriteRule ^(alpha|beta)/?(.*) /$2?site=$1 [R,L] 

이 일시적으로 리디렉션 (HTTP 상태 코드 302)에서 "알파"또는 "베타"리소스에 "알파"없이 또는 "베타"로 시작하는 URL을 시작하지만 쿼리 변수 "site"와 연결된 쿼리 문자열로 추가됩니다.

예 :이 원래 GET 호출에 의해 제공되는 쿼리 문자열을 고려하지 않습니다

// Will be redirected to http://host.com/shoes/nike/order.php?site=alpha 
GET http://host.com/alpha/shoes/nike/order.php 

편집 할 수 있습니다. 당신이 그 필요한 경우 다음이 할 것 :

RewriteRule ^(alpha|beta)/?(.*) /$2?site=$1 [QSA,R,L] 
RewriteRule .* index.php [NC,L] 

건배!

+0

네, 그게 내가 찾고있는거야. 나는 아직 그것을 작동시키지 못했다. 404 오류가 나타납니다. – xer0x

+0

리디렉션을 루트 디렉토리의 index.php를 가리 키도록 매핑해야합니다 (레이아웃을 알지 못합니다). 다른 규칙을 사용하십시오. 이렇게하면 index.php의 모든 것을 처리 할 수 ​​있으며 클라이언트가 요청한 것을 알기 위해 올바른 REQUEST_URI를 갖게됩니다. – aefxx

+0

처음에는 잘 모르겠지만 지금은 작동 중입니다! 감사! – xer0x

관련 문제