2010-06-30 26 views
8

Công ty chúng tôi đang thay đổi nền tảng web và chúng tôi muốn có thể duy trì kết quả trên Google của mình để chúng tôi dự định đưa 301 chuyển hướng vào tệp htaccess của chúng tôi.Tệp .htaccess có thể quá lớn

Mối quan tâm của tôi là nếu tôi đặt tất cả các chuyển hướng này (có thể là 3000 - 5000 tổng số), nó sẽ làm chậm máy chủ khi nó thực hiện tất cả các kiểm tra đó.

Có ai biết nếu có tệp htaccess lớn này sẽ gây ra bất kỳ sự cố nào không? Tôi có một máy chủ khá nhanh cho các trang web (8 lõi) vì vậy tôi có một số lượng hợp lý của mã lực có sẵn.

+0

Bất kỳ kết quả nào về điều này? – Andor

+4

Điều tôi thấy là bạn có thể thực hiện TON chuyển hướng 301 dòng mà không có sự khác biệt đáng kể về hiệu suất. Tuy nhiên, RedirectMatch có thể làm chậm mọi thứ khi bạn có một vài nghìn trong số đó. Cuối cùng tôi đã chuyển hướng và tạo các thư mục con và đặt các đường RedirectMatch và RedirectMatch có liên quan trong đó. –

Trả lời

3

Tôi nghi ngờ nó sẽ làm chậm đáng kể máy chủ. Nhưng hãy kiểm tra nó trước.

Tạo tệp .kaccess 5k trong thư mục www/temp với một số quy tắc viết lại như bạn sẽ sử dụng. Xem mất bao lâu để truy cập một trang có và không có tệp .htaccess.

+0

Tôi sẽ thử. Tôi sẽ đăng những gì tôi trải nghiệm khi tôi có một số dữ liệu thực. –

+0

Bạn đã thành công trong thử nghiệm của mình chưa? Bạn có bất kỳ dữ liệu thực tế nào không? – Jon

1

Hmm. Tôi không có bất kỳ con số khó khăn nào cho dù Apache có vấn đề về hiệu suất với nhiều chuyển hướng, nhưng tôi sẽ cảm thấy khó chịu khi có các tệp htaccess khổng lồ được phân tích theo số theo yêu cầu, bất kể đó là URL mới hay cũ.

Nếu có thể, tôi có xu hướng xử lý việc kết hợp URL "cũ" với URL mới bằng ngôn ngữ phía máy chủ và bảng cơ sở dữ liệu để tra cứu, nếu chỉ để bảo trì dễ dàng hơn.

Việc và cách thức đó có thể phụ thuộc vào cấu trúc URL mới của bạn cũ hay không. Nếu ví dụ, tất cả các URL cũ đã có một cấu trúc chung như

www.domain.com/cms/folder/pagename.htm 

có thể được tách ra khỏi cấu trúc mới, tôi sẽ chuyển hướng tất cả lưu lượng "cũ" vào một tập tin kịch bản trung ương (bất kể nền tảng máy chủ của bạn là, ASP, PHP ...) và thực hiện tra cứu đơn giản và chuyển hướng tiêu đề ở đó.

0

Theo tài liệu tham chiếu: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html Tôi cho rằng nó sẽ kéo để xử lý tất cả 3k x2 theo mọi yêu cầu.

Hơn nữa, tôi cho rằng nó sẽ là nighmare để quản lý những quy định về thay đổi - bằng tay nó là ...

2

Những câu trả lời khác có một số gợi ý tốt, nhưng nếu bạn không gió lên sử dụng một số lựa chọn để viết lại quy tắc, tôi thực sự khuyên bạn nên đặt những dòng này trong tệp cấu hình máy chủ chính thay vì tệp .htaccess. Bằng cách đó, Apache sẽ chỉ phân tích cú pháp chúng một lần, khi nó khởi động và nó có thể chỉ đơn giản là tham chiếu đến cấu trúc dữ liệu nội bộ thay vì phải kiểm tra tệp .htaccess theo mọi yêu cầu. Trên thực tế, các nhà phát triển Apache khuyên bạn không nên sử dụng các tệp .htaccess trừ khi bạn không có quyền truy cập vào cấu hình máy chủ chính. Nếu bạn không sử dụng .htaccess file, bạn có thể đặt

AllowOverride None 

trong cấu hình chính, và sau đó Apache thậm chí không phải mất thời gian tìm kiếm các tập tin ở tất cả. Trên một máy chủ bận rộn, điều này có thể là một tối ưu hóa hữu ích.

Một điều khác mà bạn có thể xem xét thực hiện (kết hợp với phần trên) là sử dụng chỉ thị RewriteMap để "thuê ngoài" URL viết lại cho một chương trình bên ngoài. Bạn có thể viết chương trình bên ngoài này, ví dụ, lưu trữ các URL cũ trong một Hashtable, hoặc bất kỳ loại tối ưu hóa nào là thích hợp.

Các vấn đề liên quan