2009-05-14 3 views
0

다음 URL이 작품을 좋아 :Zend/Apache mod_rewrite ... 무엇이 잘못 되었나요?

http://localhost/index/index/ 

을하지만, 그들은 이런 식으로 들어올 때 나는 _GET의 $ 변수로 드릴 수 없습니다 :

http://localhost/index/index/test/1234/test2/4321

- 부트

나는 그러나 수 , _get $ 변수를 다음과 같이 변경합니다.

http://localhost/index.php?test=1234&test2=4321 
http://localhost/index?test=1234&test2=4321 
http://localhost/index/index?test=1234&test2=4321 

/index/index/var/val 방식을 사용할 때 변수가 나에게 나타나지 않는 이유는 무엇입니까?

아래에서 내 .htaccess 파일을 찾을 수 있습니다.

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

답변

3

젠드 프레임 워크는, 그들에 액세스 할 수, $ _GET 변수로 요청 URI의 데이터를 사용할 수 있도록 컨트롤러에 키를 사용하지 않습니다 그래서

$test = $this->getRequest()->getParam('test') //$test = 1234 

이하

$test = $this->_getParam('test'); 
+0

답변입니다 ... Zend_Filter_Input에 _GET $을 (를) 사용하면서 내가 offtrack을 가졌다 고 생각합니다. – MichaelICE

0

$_GET 때문에 쿼리 문자열의 변수를 포함 - 그 물음표 후 URL의 부분입니다. .htaccess 파일의 다시 쓰기 규칙은 모두으로 기존 파일 또는 디렉토리를 참조하지 않는 URL은 원래 URL의 흔적없이 그냥 index.php으로 바뀝니다 (그래도 Gumbo의 의견에 다시 말하지만 여전히 $_SERVER['REQUEST_URI']을 통해 액세스 할 수 있습니다.) (그들은 URL에 물음표를 넣어하지 않는 IE) RewriteRule의 당신이 $_GET를 사용하기 위해 필요한 것 무엇 인 쿼리 문자열을 만들 수 없습니다. 내가 뭔가 마지막 RewriteRule를 교체 제안

을 like

RewriteRule ^.*$ index.php$0 [NC,L] 

$0index.php에 원래 URL을 추가합니다. 예를 들어 http://localhost/index/index/test/1234/test2/4321http://localhost/index.php/index/index/test/1234/test2/4321이 될 것이므로 요청은 index.php으로 처리되고 $_SERVER['PATH_INFO'] 변수는 원래 URL 인 /index/index/test/1234/test2/4321으로 설정됩니다. PHP 코드를 작성하여 구문 분석하고 원하는 매개 변수를 선택할 수 있습니다.

당신이 처음에 /index/index을하지 않으려면

는 PATH_INFO 변수에 저장하려면이 대신 같은 RewriteRule를 사용할 수 있습니다

RewriteRule ^/index/index(.*)$ index.php$1 [NC,L] 

또는

RewriteRule ^(/index)*(.*)$ index.php$2 [NC,L] 

를 없애기 어떤 수의 선도적 인 /index es.

편집 : 실제로, 당신은 당신이 RewriteRule의 기존 그냥 원래 요청 URI를 얻을 수 $_SERVER['REQUEST_URI'] 볼 유지할 수 있습니다; 경로 정보를 엉망으로 만들 필요가 없습니다. 그런 다음 PHP로 원하는대로 분할 할 수 있습니다.

+0

쿼리 문자열의 나머지 부분을 대신 슬래시를 사용하도록 변환하려면 어떻게해야합니까? &? – MichaelICE

+0

원래 요청 된 URL 경로 및 쿼리가 손실되지 않습니다 ($ _SERVER [ 'REQUEST_URI'] 참조). – Gumbo

+0

@Gumbo : 좋은 점, 완전히 그것에 대해 잊어 버렸습니다 –