2016-09-26 3 views
2

다음과 같은 매개 변수가있는 페이지 리디렉션 URL이 있습니다. 해당 URL에서 여러 매개 변수가있는 URL 다시 작성 php

http://example.com/search.php?layout=details&Keyword=mobile&view=product&CategoryId=1026&product_id=93477

i는 데이터베이스에서 데이터를 가지고 모든 매개 변수 값을 복용하고 있습니다.

그래서이 페이지를로드 할 때 아래와 같이 가장 사용자 친화적 인 URL을 표시해야합니다. 해당 URL에서 나는 다음과 같은 URL을 다시 작성하는 것을 시도했다

http://example.com/93477.htm

난 내 리디렉션 URL을 사용하고있다 PRODUCT_ID의 값을 포함해야합니다. 그러나 나는 "categoryId"및 "키워드"매개 변수를 사용할 수 없습니다.

다시 쓰십시오 ^/([a-zA-Z0-9/-] +) .htm /search.php?layout=details &보기 = product & 키워드 = $ 3 & 카테고리 아이디 = $ 2 & product_id = $ 1 last;

사람이 짝을보십시오 .. 성공적으로 수행에

감사합니다,

인 Vignesh 쿠마 K

+1

원본 URL의 쿼리 문자열에있는 각 매개 변수가 sed를 사용하여 SQL 쿼리를 작성하면 동일한 레코드를 찾을 수 없습니다. 원본 URL의 각 필수 매개 변수는 재 작성 URL에 매핑되어야합니다. – RamRaider

답변

1

를 도와주세요

RewriteEngine on 
RewriteCond %{THE_REQUEST} \s/search\.php\?layout=details&Keyword=([^&]*)&view=product&CategoryId=([^&]*)&product_id=([^&]*) [NC] 
RewriteRule^/%2/%3/%1? [L,NE,R=302] 
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ /search.php?layout=details&Keyword=$2&view=product&CategoryId=$3&product_id=$1 [L,QSA] 

원래 URL :

,

http://example.com/search.php?layout=details&Keyword=mobile&view=product&CategoryId=1026&product_id=93477

재 작성된 URL :

http://example.com/93477.htm

업데이트 1 :

는 [QSA] 구간에 추가 된

비켜 코드가 지금은 PHP에게 $ _GET

http://httpd.apache.org/docs/current/rewrite/flags.html#flag_qsa

업데이트 2를 사용 동적 매개 변수를 가져 오지하기 위해 쿼리 문자열을 추가 할 수 있도록 :

만들기 위해 htaccess로 코드를 편집 키워드 및 카테고리 ID 동적

+0

답장을 보내 주셔서 감사합니다. 그러나 원래 URL에서는 CategoryId 및 키워드가 모든 URL에 대해 동적으로 변경됩니다. 따라서이 경우 우리는 귀하의 코드를 사용합니다. –

+1

[QSA]를 사용하여 첨부 된 쿼리 문자열을 가져옵니다. 내가 답장을 업데이트하자. –

+1

@VigneshKumar가 코드를 업데이트하고 문제가있는 친구를 해결했는지 확인하고 업데이트 해 주겠습니까? –