การ 301 redirect ใน angular

การ 301 redirect ใน Angular คือการเปลี่ยนเส้นทางจาก URL เดิมไปยัง URL ใหม่อย่างถาวร โดยจะใช้ HTTP status code 301 เพื่อแจ้งให้เบราว์เซอร์และเครื่องมือค้นหาทราบถึงการเปลี่ยนแปลงนี้

การ 301 redirect ใน Angular สามารถทำได้โดยใช้คำสั่ง redirectTo() ในคอมโพเนนต์ Router ตัวอย่างเช่น

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';

@Component({
selector: 'app-example',
templateUrl: './example.component.html',
styleUrls: ['./example.component.css']
})
export class ExampleComponent implements OnInit {

constructor(private router: Router) {}

ngOnInit() {
this.router.redirectTo('/new-url');
}

}

ในตัวอย่างนี้ เมื่อผู้ใช้เรียกใช้คอมโพเนนต์ ExampleComponent เบราว์เซอร์จะถูกเปลี่ยนเส้นทางไปยัง URL /new-url โดยใช้ HTTP status code 301

นอกจากนี้ ยังสามารถกำหนดค่าเพิ่มเติมให้กับคำสั่ง redirectTo() ได้ เช่น การกำหนดค่าระยะเวลาการแคช ตัวอย่างเช่น

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';

@Component({
selector: 'app-example',
templateUrl: './example.component.html',
styleUrls: ['./example.component.css']
})
export class ExampleComponent implements OnInit {

constructor(private router: Router) {}

ngOnInit() {
this.router.redirectTo('/new-url', {
permanent: true,
refresh: 3000
});
}

}

ในตัวอย่างนี้ การ redirect จะใช้ HTTP status code 301 และเบราว์เซอร์จะแคช URL ใหม่เป็นเวลา 3 วินาที

การ 301 redirect มีประโยชน์ในหลายกรณี เช่น การเปลี่ยนชื่อหน้าเว็บ การย้ายหน้าเว็บไปยังตำแหน่งใหม่ เป็นต้น

ตัวอย่างการทดสอบการ 301 redirect ใน Angular มีดังนี้

1
$ ng serve

เปิดเบราว์เซอร์ไปที่ http://localhost:4200/example

เบราว์เซอร์จะถูกเปลี่ยนเส้นทางไปยัง URL http://localhost:4200/new-url โดยใช้ HTTP status code 301

ตรวจสอบว่าเบราว์เซอร์แคช URL ใหม่เป็นเวลา 3 วินาที โดยเปิดเบราว์เซอร์ใหม่และไปที่ URL http://localhost:4200/example เบราว์เซอร์จะไม่ถูกเปลี่ยนเส้นทางไปยัง URL http://localhost:4200/new-url ทันที แต่จะถูกเปลี่ยนเส้นทางหลังจาก 3 วินาที