2013-06-13 4 views
4

URL GET 매개 변수를 숨기는 방법 (http://domain.com/MyFirstYii/page?view=about). 나는 많은 게시물을 수색했다. 그들은 모두 재 작성 및 URL 관리자에 대해 말하고 있지만, 나는 내가 원하는 것을 성취 할 수 없었다. :(URL에서 GET 매개 변수 숨기기

내 시나리오는,

가 난 그냥 URL 매개 변수를 GET 숨길

예 :..

http://domain.com/MyFirstYii/page***?view=about*** 

내가 ***?view=about***을 숨기고 싶어

다음 URL을해야 이 http://domain.com/MyFirstYii/page처럼 보입니다. 다른 페이지는 http://domain.com/MyFirstYii/post입니다. 간단한 GET 매개 변수는 POST 매개 변수처럼 작동해야합니다. rs.

미리 감사드립니다.

편집 : GET 파라미터를 숨길 규칙

나는 URLManager에서 몇 가지 규칙을 만들려하지만, 어떤 종류.

+0

를 볼 수 있습니다 알 겠어? – enenen

+1

그건 말이되지 않습니다. URL은 URL입니다. HTTP 요청에 포함 된 다른 사용자 제어 데이터는 없습니다. URL 다시 쓰기 사용을 고려하십시오. – SLaks

+0

'href'에도 사용하고 싶었습니다. 거기에 POST를 사용할 수 없습니까? –

답변

2

에서을 w \ 정규 표현식은 "단어"문자를 의미하며 "my-prety-page"와 같은 URL 부분은 일치하지 않습니다. GET 매개 변수를 숨기려면 urlManager 규칙을 향상시켜야합니다. 당신이 URL을

http://example.com/page/12/my-prety-title 

페이지 컨트롤러가 인수로 ID와 제목보기 작업을 수행하기 위해 호출됩니다 입력 할 때이 경우

'<controller:\w+>/<id:\d+>/<title:[^\/]*>/*' => '<controller>/view' 

: 당신은 SEF URL을 사용하는 페이지의 이러한 규칙을 작성할 수 있습니다. 규칙 /* 추가 PARAMS을 유지할 수 있습니다

http://example.com/page/view?id=12&title=my-prety-title 

마지막 부분 :이 URL을 입력 한 경우는 동일합니다. 예 : 주소가 UserControlleractionView에서

http://example.com/user/55/john-doe-junior/foo/bar/ 

경우 당신은

echo '<pre>' ; 
print_r($_GET); 
echo '</pre>' ; 
die(); 

을 작성할 수 있습니다 그리고 당신은 단지`오며 'Post'를 사용하는 대신에 문제가 무엇인지

Array 
(
    [id] => 55 
    [title] => john-doe-junior 
    [foo] => bar 
) 
0

주석이 main.php

 
'urlManager'=>array(
         'urlFormat'=>'path', 
         'showScriptName'=>false, 
         'rules'=>array(
           'MyFirstYii/post/<view>'=>'MyFirstYii/post', 
           '<controller:\w+>/<id:\d+>'=>'<controller>/view', 
           '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>', 
           '<controller:\w+>/<action:\w+>'=>'<controller>/<action>', 
         ), 
       ), 

에서 라인과 코드

 
RewriteEngine on 

# if a directory or a file exists, use it directly 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

# otherwise forward it to index.php 
RewriteRule . index.php 
+0

이것들은 모두 기본 재 작성 옵션이며, 이미이 것들의 주석을 풀어 놓았다. 심지어 'site/page? view = about'URL을 보여줍니다. –

+0

이것은 URL 형식 만 변경하고 index.php 매개 변수를 숨 깁니다. –

+0

그래, '? view = about'도 숨기고 싶습니다. : –

-3

당신이 얻을 사용하려는 이러한 매개 변수가 필요하면 다음 프로젝트의 루트 디렉토리에 htaccess로 파일을 넣어 쓰기, 이것이 GET 작동 방식이므로 숨길 수는 없습니다. 매개 변수를 숨기려면 POST 대신 매개 변수를 url 대신 요청 페이로드로 전달해야합니다.

+0

그는 앵커 태그에 URL을 동적으로 배치한다고 말합니다. 여기서는 POST 메쏘드와 get 메쏘드가 작동하지 않습니다.'GET' 메쏘드를 사용하는 – saikiran

-3

대신 get ... 대신 post 메서드를 사용하면 가장 효율적이며 효율적인 솔루션입니다.

[http://pure-essence.net/2007/06/29/simple-php-path-rewrite/]

+0

은'POST'보다 빠릅니다. 따라서 'POST'는 효율적인 솔루션이 아닙니다. 'POST'의 가장 큰 장점은 전송되는 동안 민감한 정보를 숨길 수 있고 많은 양의 데이터를 전송할 수 있다는 것입니다. – Kevin

+0

야, 그만해. 여기서 POST 할 것은 없습니다 ... 모든 사람들이 GET 대신 POST를 사용하는 것에 대해 이야기 할 수는 없습니다. 그것은 아무런 의미가 없습니다! – MrSoundless

+1

@MrSoundless OP의 첫 번째 질문 (편집하기 전)은 'URL 숨기기'에 관한 것입니다. (편집 내역 http://stackoverflow.com/posts/17086732/revisions 참조). 글쎄, 이제 너에게 의미가 있어야 해! – Kevin

0

추가 :

이 사이트를 체크 아웃 귀하의 요청에 후속 조치 당신의 URL 규칙 가기이 URL 규칙 :

  • 컨트롤러 이름 : 나는 다음을 믿고있어

    'page/<view:\w>' => 'user/page' 
    

    UserController

  • 작업 이름 : actionPage

내 가정이 잘못 되었다면, 올바른 컨트롤러 이름과 액션 이름을, 그래서 답을 해결할 수 있습니다하시기 바랍니다.

UPDATE : 고정 된 컨트롤러 이름은

UPDATE2 의견에 따라 :

이이 컨트롤러의 모든 작업에 대해 작업 할 경우, 사용 :

'<action:\w>/<view:\w>' => 'user/<action>' 
+0

내 컨트롤러가 'UserController'이고 작업 이름이 'page'입니다. –

+0

변경되었습니다. – MrSoundless

+0

또한 두 번째 규칙이 추가되었습니다. 두 번째 규칙은 첫 번째 규칙 대신 사용할 수 있습니다. 필요합니다. 내가 여기서 그것을 테스트 할 수 없기 때문에 그것이 어떻게 작동하는지 알려줘. – MrSoundless