URL sạch của Poor Man so với Mod_Rewrite


8

Tại công ty nơi tôi làm việc, chúng tôi đã sẵn sàng thiết kế một trang web mới và có một số bất đồng về cách làm sạch URL. Trong năm qua, chúng tôi đã thực hiện những cải tiến nhỏ cho trang web hiện tại của chúng tôi với dự đoán về thiết kế lại quy mô lớn, có liên quan đến URL sạch của Poor Man ™.

Thí dụ:
http://www.example.com/products/widgets/index.php

http://www.example.com/products/sprockets/index.php

Đối với trang web mới, có một số thảo luận về việc sử dụng mod_rewrite:

  1. Người dùng yêu cầu http://www.example.com/products/widgets/
  2. mod_rewrite gửi chúng đến http://www.example.com/index.php?page=products/widgets
  3. index.php gửi chúng đến trang thật http://www.example.com/products/widgets.php

Tôi không biết làm thế nào tất cả các Rigamaroll này được thêm bất kỳ giá trị. Nhân viên ủng hộ mod_rewrite đang tuyên bố rằng ít thư mục bằng cách nào đó tương đương với việc bảo trì dễ dàng hơn.

Không có trang nào trong số các trang hiện có của chúng tôi sử dụng các biến trong chuỗi truy vấn. Tất cả các nội dung là trong các tập tin thực tế. Chúng tôi đang lên kế hoạch đưa một số nội dung vào cơ sở dữ liệu, như thông cáo báo chí và triển lãm thương mại sắp tới mà chúng tôi sẽ tham dự, nhưng phần lớn các trang sẽ chỉ sử dụng PHP để bao gồm HTML phổ biến như tiêu đề, chân trang và điều hướng. Tôi chắc chắn sẽ sẵn sàng sử dụng mod_rewrite cho nội dung động như thế.

Có một số lợi ích lớn mà tôi thiếu rằng chúng ta nên sử dụng mod_rewrite cho mọi thứ? URL sạch của Poor Man ™ có đủ cho các phần không phải là cơ sở dữ liệu trên trang web của chúng tôi không?


tôi khó khăn hơn ... quá nhiều rắc rối cho một url sạch ...

Câu trả lời:


3

Quy trình 3 bước bạn nêu ở trên có vẻ dư thừa và vô dụng như đã nêu ở trên. Nếu trong bước 3 index.php đưa chúng đến trang "thực" thì tại sao thậm chí còn bận tâm với mod_rewrite? Làm như vậy sẽ phủ nhận những lợi thế mà mod_rewrite đang cung cấp. Cụ thể, một URL thân thiện với công cụ tìm kiếm và bảo trì trang web dễ dàng hơn. Nếu bạn dừng lại ở bước hai, bạn sẽ được lợi từ mod_rewrite bằng cách chỉ có một trang để duy trì nhưng nó có thể phục vụ số lượng trang gần như không giới hạn và minh bạch cho người dùng và các công cụ tìm kiếm khi họ chỉ nhìn thấy URL ở bước 1.


4

Đó là một huyền thoại rằng "/ pagename" hoặc "/pagename.htm" tốt hơn cho các công cụ tìm kiếm so với "/pagename.php". Ít nhất là tại Google, chắc chắn không có cơ sở cho việc này (và tôi cũng giả sử những người khác). Tương tự, ngay cả "index.php? Page = pagename" không cần phải viết lại thành "/ pagename" - các công cụ tìm kiếm có thể hiểu các URL đó mà không gặp vấn đề gì và Google thậm chí còn ghi lại rằng nó thích người dùng không viết lại chúng không cần thiết ( http://googlewebmastercentral.blogspot.com/2008/09/dynamic-urls-vs-static-urls.html ). Vì vậy, miễn là bạn không tạo URL vô tận với các tham số URL, URL được viết lại không nhất thiết phải thân thiện với công cụ tìm kiếm hơn URL không được viết lại .

Điều đó nói rằng, người dùng có thể thích các URL đẹp hơn các URL xấu / phức tạp. Nếu lo lắng chính của bạn là có các URL đẹp trong kết quả tìm kiếm, tôi sẽ xem microformat mà Google hiện hỗ trợ ( http://googlewebmastercentral.blogspot.com/2010/09/rich-snippets-testing-tool- Cải thiện.html ) vì những điều này thường có thể cung cấp trải nghiệm người dùng thậm chí tốt hơn về các URL trong kết quả tìm kiếm. Điều này sẽ không giải quyết được vấn đề người dùng muốn các URL trông đẹp mắt để liên kết đến, nhưng với điều kiện URL của bạn không phức tạp vô tận (và ví dụ của bạn thì không), có thể sẽ không tạo ra sự khác biệt có thể đo lường được nếu bạn viết lại chúng cho điều đó trường hợp sử dụng. Nếu không có sự khác biệt có thể đo lường được thì có lẽ không nên dành thời gian cho việc thiết kế và duy trì thiết lập như vậy.


1

Những gì bạn gọi là "URL sạch của người nghèo" chỉ là các URL sạch được triển khai thông qua hệ thống tệp. Bạn có thể có các loại URL đó bằng mod_rewrite, giống như bạn có thể có loại URL thứ hai mà không cần mod_rewrite.

URL sạch là chính xác những gì tên ngụ ý URL URL sạch hoặc trông sạch sẽ. Cả hai

http://yoursite/foo/bar

http://yoursite/foo/bar.php

là các URL sạch. Thuật ngữ "URL sạch" không chỉ định bất kỳ triển khai cụ thể nào. Bạn có thể triển khai URL sạch bằng cách tạo các trang .html được lưu trong bộ nhớ cache mỗi khi trang web được cập nhật nếu bạn muốn. mod_rewrite chỉ đơn giản cho phép bạn tách cấu trúc URL khỏi cấu trúc tệp mà không cần chuyển hướng hoặc khung.

Từ những gì nó nghe như, bạn hiện không chạy một trang web điều khiển cơ sở dữ liệu. Và mặc dù về mặt kỹ thuật nó có thể đủ điều kiện là một trang web động, nhưng nó có thể nhiều hơn ở đầu tĩnh của phổ nếu bạn chủ yếu sử dụng PHP chỉ để bao gồm các tiêu đề / chân trang. Điều đó tốt cho các trang web nhỏ hiếm khi cần cập nhật, nhưng khi trang web của bạn lớn hơn, bạn sẽ cần triển khai một CMS thực sự.

Trường hợp mod_rewrite tỏa sáng là khi bạn bắt đầu cân nhắc khả năng bảo trì. Thay vì có hàng trăm tệp php cho mỗi và mọi trang sản phẩm (có nhiều mã dự phòng), bạn chỉ cần có một tập lệnh duy nhất xử lý tất cả các yêu cầu. Nhưng nếu bạn không còn ánh xạ một đến một tệp các tệp .php thực tế cho các trang web được hiển thị, thì bạn sẽ cần sử dụng một cái gì đó như mod_rewrite để định tuyến các yêu cầu trang một cách thông minh trong khi duy trì ảo tưởng cấu trúc tệp / thư mục ở đó

Vì vậy, nó không phải là thư mục con phụ mà bạn nên lo lắng. Thực tế là bạn đang tạo một tập lệnh .php riêng cho mỗi trang trên trang web của mình.


1

"URL sạch" thường có nghĩa là không có tệp ext; nó giúp ẩn chi tiết thực hiện từ người xem. Ưu điểm của điều đó là khi bạn quyết định chuyển trang web của mình từ say, PHP sang Ruby on Rails, bạn có thể làm như vậy mà không cần thay đổi một URL.

Bây giờ, mặc dù có thể chạy trang web của bạn với ASP.net và có tên tệp kết thúc bằng .php nếu bạn muốn giữ nguyên URLS của mình, nhưng có vẻ hợp lý hơn khi thực hiện chúng theo cách mà vấn đề không bao giờ phải đưa ra .

http://www.example.com/news/2010/10/our-new-url-system/

Luôn có thể là một URL tốt, ngay cả khi bạn thay đổi hoàn toàn kiến ​​trúc cơ bản hoặc chuyển từ tệp tĩnh sang tệp động .. hoặc ngược lại.


0

Đối với tôi, dường như tất cả nội dung của bạn trong cơ sở dữ liệu sẽ nhanh hơn và dễ bảo trì hơn sau đó đào qua một hệ thống tệp lớn mỗi khi bạn cần cập nhật. Như John Mueller đã đề cập ở trên, URL đẹp sẽ không tạo ra sự khác biệt lớn trong bảng xếp hạng của bạn, tuy nhiên, bạn muốn xem xét sử dụng Mod_Rewrite để giữ các URL hiện tại và giá trị của chúng. IE nếu:

example.com/widgets/index.php có 1.000 liên kết trỏ đến nó và bạn thay đổi đó thành example.com/pages/widgets.php bạn có nguy cơ mất rất nhiều giá trị đó (tất nhiên bạn có thể chuyển hướng nó, nhưng điều đó gây tranh cãi hoặc không sẽ vượt qua cùng một giá trị)

Đề xuất của tôi sẽ là nếu bạn đang tiếp tục phân phát nội dung tĩnh tiếp tục sử dụng hệ thống tệp, nếu bạn đang chuyển đổi nó thành nội dung động, hãy sử dụng Mod_Rewrite để giữ cấu trúc URL hiện tại của bạn một cách khéo léo. Hoặc nếu không thể duy trì cấu trúc hiện tại, hãy sử dụng Mod_Rewrite để tạo cấu trúc ổn định cho các bản cập nhật trong tương lai.


0

Như đã nói, có .phphoặc ?page=không thực sự quan trọng. Điều quan trọng là nếu bạn đang làm một cái gì đó như thế này:

http://www.example.com/index.php?page=13

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.