2014-10-18 4 views
0

search/2을 다시 작성하는 방법 index.php?search="x"&&searc_by="y"&page_no=2에서?다시 쓰기 규칙 및 the_request

내가 틀리지 않다면 %REQUEST_URIsearch/2입니다. 맞습니까? 이 경우 %THE_REQUEST도 무엇입니까?

search/2 링크가있는 페이지가 home_page로 재 작성됩니다.

+0

- RewriteCond % {REQUEST_FILENAME}! -fRewriteCond % {REQUEST_URI} ^/Home_Page/([A-Za-z-0-9 -] +)/([0-9] +) $ -RewriteRule^([ 0 - 9 -] +) /? $ kl.php? $ 1 & page_no = $ 2 [L, NC] –

+0

RewriteCond % {REQUEST_FILENAME}! -f RewriteCond % { REQUEST_URI} ^/Home_Page/([A-Za-z-0-9 -] +)/([0-9] +) $ RewriteRule^([A-Za-z-0-9 -] +)/[0-9] +) /? $ kl.php? $ 1 & page_no = $ 2 [L, NC] –

+0

게시물의 수정 버튼을 사용하여 해당 정보를 편집하십시오. 보시다시피 댓글에서 읽을 수 없습니다. . 편집 필드 위에있는 버튼을 사용하여 코드 형식을 지정하십시오. 철자에 조금주의하십시오. – Sumurai8

답변

0

%{REQUEST_URI}%{THE_REQUEST}은 mod_rewrite의 변수입니다. 이 변수에는 다음이 포함됩니다.

  • %{REQUEST_URI}에는 호스트 이름 뒤에 있고 쿼리 문자열 앞에 모든 것이 포함됩니다. URL http://www.example.com/its/a/scary/polarbear?truth=false에서 %{REQUEST_URI}/its/a/scary/polarbear을 포함합니다. 이 변수는 모든 다시 쓰기 후에 업데이트됩니다.
  • %{THE_REQUEST}은 서버에 대한 전체 요청을 포함하는 변수입니다. 이것은 GET /its/a/scary/polarbear?truth=false HTTP/1.1 형태의 것입니다. 서버에 대한 요청은 그러한 요청의 수명주기 동안 정적이기 때문에이 변수는 다시 쓰기가 수행 될 때 변경되지 않습니다. 따라서 외부 요청에 무언가가 포함 된 경우에만 다시 작성하려는 특정 상황에서 유용합니다. 무한 루프가 발생하는 것을 막기 위해 자주 사용됩니다.

전체 변수 목록은 here입니다.


귀하의 경우에는 search/2?search=x&search_by=y에 대한 링크가 있습니다. 내부적으로 이것을 index.php?search=x&search_by=y&page_no=2으로 다시 쓰려고합니다. 다음과 같은 규칙이 작업을 수행 할 수 있습니다

RewriteRule ^search/([0-9]+)$ /index.php?page_no=$1 [QSA,L] 

첫 번째 인수이 들어오는 외부 요청을 일치 그런 다음 /index.php?page_no=2에 다시 작성됩니다.. QSA (쿼리 문자열 추가) 플래그는 기존 쿼리 문자열을 다시 작성된 쿼리 문자열에 추가합니다. 결국 /index.php?search=x&search_by=y&page_no=2으로 끝납니다. L 플래그는 다시 쓰기의 '라운드'를 중지합니다. 그것은 단지 최적화 일입니다.

+0

대단히 감사합니다. 한 번 더 질문, 내가 RewriteRule^search/([0-9] +) $ 할 때 링크를 만들 때 추가 한 쿼리와도 일치하려고합니까 : search/2? search = x & search_by = y. –

+0

'?'뒤에 모든 것이 쿼리 문자열입니다. 'RewriteRule'의 첫 번째 인수에서 쿼리 문자열이 일치하지 않습니다. QSA-flag를 사용하기 때문에 원래의 쿼리 문자열은 '통과하여'다시 작성된 URL에서 원래 URL에서 사용할 수있는 것처럼 사용할 수 있습니다. – Sumurai8

+0

RewriteCond % {REQUEST_URI} ^/search/ RewriteRule^([A-Za-z-0-9 -] +) /? $ kl.php? $ 1 [L, NC, QSA] 내 내부 링크 :/search? ($ _ SERVER [ 'QUERY_STRING'] –