
이 구성 파일을 작성하면 리디렉션이 작동합니다.
map $request_uri $new_uri {
default https://github.com;
/www http://wow.com;
/?p=1 http://wow.com/p1;
}
server {
listen 80;
server_name TestDomain.com www.TestDomain.com;
location / {
if ($new_uri) {
return 301 $new_uri;
}
}
}
이제 각 리디렉션에서 301인지 302인지 제어하고 싶기 때문에 다음과 같이 시도해 보았습니다.
map $request_uri $new_uri {
default https://github.com;
/www http://wow.com;
/?p=1 http://wow.com/p1;
}
map $request_uri $ret_code {
default 302;
/www 302;
/?p=1 302;
}
server {
listen 80;
server_name TestDomain.com www.TestDomain.com;
location / {
if ($new_uri) {
return $ret_code $new_uri;
}
}
}
invalid return code
하지만 return 문을 올바르게 얻을 수 없는 것 같습니다. 구성 파일을 테스트할 때 불평합니다 . 변수에 반환 코드와 URL이 모두 있는 경우 마지막 줄을 어떻게 지정합니까?
또한 기본값을 어떻게 구성할 수 있는지에 대한 조언은 다음과 같습니다.
map $request_uri $new_uri {
default https://github.com$request_uri;
그러면 기본 리디렉션 규칙이 ? testdomain.com/whatever
로 설정됩니다.github.com/whatever
답변1
상태 코드를 구현하는 방법을 모르겠습니다.
기본 옵션의 경우 다음을 시도해 볼 수 있습니다.
map $request_uri $new_uri {
default DEFAULT;
...
}
server {
listen 80;
server_name TestDomain.com www.TestDomain.com;
location / {
if ($new_uri = "DEFAULT") {
return $ret_code https://github.com$request_uri;
}
if ($new_uri) {
return $ret_code $new_uri;
}
}
}
답변2
여러 개를 사용하여 해결됨 ifs
:
map $request_uri $new_uri {
default DEFAULT;
/www http://wow.com;
/?p=1 http://wow.com/p1;
}
map $request_uri $ret_code {
default 507;
/www 302;
/?p=1 301;
}
server {
listen 80;
server_name TestDomain.com www.TestDomain.com;
location / {
if ($new_uri = 'DEFAULT') {
return 301 https://github.com$request_uri;
}
if ($ret_code = 301) {
return 301 $new_uri;
}
if ($ret_code = 302) {
return 302 $new_uri;
}
}
}
나는 그 질문에 어떤 함정이 있는지, 그리고 그것을 할 수 있는 더 좋은 방법이 있는지 알아보기 위해 잠시 동안 그 질문을 받아들이지 않을 것입니다.