2014-12-11 3 views
0

URL에 & 옵션 = xxxx가 포함 된 특정 URL을 다시 작성하도록 NGINX에 알리는 데 어려움을 겪고 있습니다.NGINX : 해시/앵커로 바꿀 URL 다시 작성

URL은 도메인 부분 (http://www.test.com/), 데이터베이스 참조 부분 (데이터베이스 = 데모) 및 연속 변수 (& xxxx = xxxx)로 구성됩니다. 나는 &의 첫 번째 인스턴스는 항상 #

원래의 URL은 다음과 같습니다 싶습니다 :

http://www.test.com/?database=demo&option=sign&type=new

나는 URL을 다시 작성 nginx를하고 싶습니다

:

..website ../?database=demo#option=sign & type = new

& 옵션에서 #option으로 변경되었습니다. ?

..website ../ 데이터베이스 = 데모 # 모델 : 그것이 &의 첫 번째 인스턴스가 아니고 #이 이미 설정되어 있기 때문에 일을 복잡하게

는 다음 URL은 변경하지 마십시오 = process & activic = none & 옵션 = 기호 & 유형 = 새

어쩌면 나는이 잘못된 방향으로 가고 있습니다. 어쩌면 NGINX에 URL의 첫 번째 &을 #로 바꾸고 #가 아니라면 # 내가 뒤따라 오는 효과이기 때문에 더 쉬울 수도 있습니다. 여기에서도 나는 이것을 달성하는 방법을 놓쳤다.

도움과지도를 보내 주셔서 감사합니다.

+0

nginx는 해시가 포함 된 URI로 리디렉션 될 수 있지만 nginx는 들어오는 요청에서 해시 파트를 볼 수 없다는 점을 이해해야합니다 (해시 - 브라우저 용이기 때문에). 그래서 /? database = demo # model = process & activion = none & option = sign & type = new - nginx는 /? database = demo 만 볼 수 있습니다. –

+0

나는 처리가 완전히 다른 위치에서 이루어진다는 것을 알고 있습니다. &는 서버에 전달되지만 클라이언트 측은 #입니다. 내가 풀고있는 문제는 어떤 시도를 한 후에 완전히 다른 해결책을 가졌다. 자바 스크립트와 PHP에서 양쪽에서 처리되도록 &와 #를 사용하여 변수를 보냅니다. 그래서 http://www.test.com/?database=demo&option=sign&type=new#&option=sign&type=new, 나를 위해 작동합니다. – user2396546

+0

이상한 해결책 :) JavaScript는 해시도없이 /? database = demo & option = sign & type = new를 처리 할 수 ​​있습니다. –

답변

-1

쿼리 문자열에 database = demo 만 있는지 여부를 확인할 수 있습니다. 그렇지 않은 경우 해시를 사용하여 리디렉션합니다. 내가 말했듯이 브라우저에서 당신이/데이터베이스 = 데모 # 모델 = 공정 입력 할 경우,? -?의 nginx 만/데이터베이스를 얻을 = 데모

location/{ 
    if ($args ~ "^database=demo&(.+)$") { 
     set $optherargs $1; 
     return 301 /?database=demo#$otherargs; 
    } 
} 

을하지만이 솔루션은 인수 민감한 주문하고, 데이터베이스 = 데모해야 첫 번째 매개 변수