it-swarm-vi.com

Cách nhanh nhất / rẻ nhất để thực hiện viết lại URL là gì?

Liên quan đến một câu hỏi khác - nếu bạn cần lấy URL viết lại ASAP đã thực hiện, một số phương pháp mà bạn đã sử dụng hoặc biết về điều đó có thể tăng tốc điều này là gì?

2
Mark Henderson

Chúng tôi quản lý để làm vài trăm sản phẩm trong vòng dưới 8 giờ. Đây là kịch bản của chúng tôi:

Chúng ta đã có:

  • Chó xấu xí chứa đầy thông số vô nghĩa
  • Nhà phát triển nội bộ
  • Toàn quyền truy cập vào cơ sở dữ liệu và lược đồ SQL
  • IIS6/ Viết lại ISAPI (nhưng chúng tôi có thể đã làm điều này cho người khác)

Lựa chọn 1

Bảng sản phẩm của chúng tôi trông như thế này:

ID | Product Name | Description | etc
-------------------------------------
001|Product 1     | This is...  | etc
002|Product 1     | This is...  | etc
003|Product 1     | This is...  | etc

Vì vậy, chúng tôi đã viết một chương trình lô nhỏ sẽ lặp qua bảng products của chúng tôi và tạo các mục trong tệp httpd.ini (phiên bản .htaccess) của chúng tôi để chúng tôi kết thúc với một tệp với Hàng trăm mục như thế này:

RewriteRule (/product-1/) /DLLFolder/Requester.dll?APPLICATION=MyApp&PROGRAM=Products&ARGUMENTS=-N001 [I,O,U] * Xin vui lòng xem từ chối trách nhiệm

Các sản phẩm của chúng tôi không thay đổi rất thường xuyên, vì vậy chúng tôi chỉ chạy lại thủ công mỗi lần chúng tôi thêm một cái gì đó. Không thanh lịch, nhưng đây là về việc hoàn thành nhanh/rẻ.

Sau đó, ở mọi nơi mà các liên kết của chúng tôi được in ra các sản phẩm, chúng tôi chỉ đảm bảo rằng các liên kết đó được xuất ra URL đầy đủ của chúng.

Điều này mất khoảng 8 giờ trong tổng số.

Tùy chọn 2

Một quy tắc Viết lại URL chung duy nhất trông giống như thế này:

RewriteRule (/products/)(.*/)(.*) /DLLFolder/Requester.dll?APPLICATION=MyApp&PROGRAM=Products&ARGUMENTS=-N$3 [I,O,U] * Xin vui lòng xem từ chối trách nhiệm

Điều này có nghĩa là chúng ta có thể viết:

/products/my/thing/whatever/the/hell/i/want/123

Và nó sẽ viết lại thành URL chính xác. Sau đó, vấn đề chỉ là thay đổi đầu ra của các liên kết URL của bạn.

* TỪ CHỐI TRÁCH NHIỆM: Kỹ năng regex của tôi rất hoen gỉ và tôi đã tạo ra chúng ngay tại chỗ. Họ có thể sai. Milage của bạn trên regex thực tế có thể khác nhau, nhưng khái niệm vẫn còn.

2
Mark Henderson