2009-07-22 4 views
0

내 질문 잘못 것은 오프 세그먼트를 얻을 수 있습니다 :어떻게 내가 두 부분이있을 때</p> <p>이</p> <p>예이다 URI

을 www.xxx.nl/products/id 및 나는 htaccess로

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 

이있는 것은 해결책이있다, 또는 호스트에 의해이 caust입니다

미리 감사드립니다.

답변

0

요청한 URI 경로 및 쿼리는 $_SERVER['REQUEST_URI']입니다. 이와 세그먼트를 얻을 수 있습니다 : 당신은 어떤 URL을 구문 분석하고 (유효한 URL을 가정) 관련 부분으로 분리해서하는 parse_url 기능을 사용할 수 있습니다

$_SERVER['REQUEST_URI_PATH'] = preg_replace('/\?.*/', '', $_SERVER['REQUEST_URI']); 
$segments = explode('/', ltrim('/', $_SERVER['REQUEST_URI_PATH'])); 
+0

왜 get 변수 url에 없습니까? – Richard

+0

요청한 URL을 매개 변수에 이미 전달할 필요가 없습니다. – Gumbo

+0

아니, 그게 내가 원하는게 아니야. 논리적 인 주소가 필요해. – Richard

2

.

+0

덕분에, 나는 웹 서비스를 위해 그것을 필요로했다. 나는 아직도 주위 완전히 – Richard

0

index.php에 전달 된 URL에는 호스트 이름, 포트 또는 쿼리 문자열이 포함되지 않습니다. (출처 : mod_rewrite docs).

나머지 URL은 슬래시로 구분되므로 explode을 사용하여 배열로 설정할 수 있습니다.

$uri_segments = explode('/', $_GET['url']); 

참고 : 어떤 배열이 실제로 포함하면 RewriteRule의 발생 위치에 따라 달라집니다. .htaccess 파일 또는 <Directory> 블록에있는 경우 일치하는 블록의 일부가 누락됩니다 (URL의 현재 디렉토리 앞에있는 항목).

+0

덕분에 내 머리를 얻을 수 없다, 나는 그것이 REST를 사용하는 지금은 첫 번째 세그먼트, 방법에 대한 두 번째, 더 이상 변수의 3 분의 클래스를 사용할 수 있습니다. 위의 문제는 슬래시로 시작하지 않은 CSS 파일과 관련이 있습니다. 이제 나머지 부분을 알아낼 수 있습니다. – Richard

관련 문제