두 개의 매개변수를 사용한 URL 재작성/리디렉션

두 개의 매개변수를 사용한 URL 재작성/리디렉션

기본적으로 다음 URL을 갖고 싶습니다.

http://domain.tld/auth.php?state=somestate&token=somelongtoken

다음으로 다시 작성/리디렉션되었습니다.

http://domain.tld/auth/validate/somestate/somelongtoken

나는 꽤 오랫동안 인터넷을 통해 검색해 왔지만 이 일을 어떻게 해야 할지 모르겠습니다..

또한 - 여기서는 리디렉션이나 재작성이 가장 좋을까요?

API에서 사용자를 확인하는 것 외에는 URL을 사용하지 않을 것이므로 해당 페이지를 방문한 후 사용자를 리디렉션하는 것뿐입니다.

답변1

테스트되지 않은 코드가 있습니다.

# Make sure you are accessing auth.php
RewriteCond %{REQUEST_URI} ^/auth.php$
# Check that state and token are present (in that order...)
RewriteCond %{QUERY_STRING} state=[^&]*token=
# Rewrite the URI
RewriteRule ^/auth.php\?state=\([^&]*\)\&token=\([^&]*\)$ auth/validate/\1/\2 [L,QSA]

/auth.php가 이미 Location:을 수행할 것이라고 말씀하셨기 때문에 재작성을 사용하겠습니다. 두 개의 리디렉션을 보내는 것은 실제로 의미가 없습니다. 게다가 그것은 검색 엔진에 대한 나쁜 습관입니다. (이 경우에는 그런 일이 일어나지 않을 것이라는 것을 알고 있습니다. 단지 언급하기만 하면 됩니다. SEO에 좋지 않다면 아마도 사용자에게도 좋지 않을 것이기 때문입니다.)

RewriteRule의 정규 표현식과 이전 조건에서는 두 개의 쿼리 문자열 매개 변수가 바로 그 순서로 되어 있을 것으로 예상합니다. 주문을 강요하지 않으려면 여러 줄이 필요합니다. 하지만 나는 그것이 문제가 되지 않는다고 생각한다.

관련 정보