2009-08-23 40 views
9

Tôi đang phát triển một webapp sử dụng codeigniter (mvc) và php. Tôi đã tự hỏi làm cách nào để tạo một sơ đồ trang web cho các công cụ tìm kiếm khi liên hệ của tôi hoạt động? Có thực tiễn tốt nhất cho việc này hay có cách nào để tự động hóa quy trình không? Tôi hỏi vì nội dung sẽ được liên tục và nhanh chóng được thêm vào nên tôi muốn sơ đồ trang web được cập nhật gần đây. Cảm ơnSơ đồ trang web cho nội dung động?

Cập nhật: để giúp trả lời câu hỏi của tôi, loại trang web mà tôi đang tạo là trang blog loại công khai nơi người dùng đăng bài viết.

Update2: Chỉ để giải thích về sự nhầm lẫn của tôi: Tôi có thể không hiểu chính xác cách thức một sơ đồ trang web được cấu trúc. Ví dụ: trên một trang web như stackoverflow, khi người dùng thêm các câu hỏi mới (và do đó, các trang mới được tạo) có thay đổi sơ đồ trang web và cần được gửi lại không? Làm thế nào quan trọng là nó cho một trang web như thế này thậm chí có một sơ đồ trang web?

Trả lời

0

Tùy thuộc vào loại trang web bạn tạo, bạn có thể thực hiện theo một số cách.

Ví dụ: nếu bạn đang tạo trang web tin tức. Bạn có thể có một trang liên kết đến từng liên kết cố định của bài viết. Nếu bạn có thể nêu chi tiết loại trang web/nội dung của nó thì chúng tôi có thể giúp đỡ tốt hơn.

+0

Chừng nào mà bạn cung cấp một cách để tiếp cận tất cả các trang thông qua điều hướng trang web một cách phù hợp, bạn cần sử dụng tốt. Hoặc bạn có muốn hỗ trợ sơ đồ trang web của Google không? – chotchki

2

Tôi có một tình huống tương tự với bạn, ngoại trừ tôi phát triển trong khung công tác Zend và Doctrine thay vì mã Igniter.

Cách chúng tôi giải quyết vấn đề này, là xây dựng một mô hình Sơ đồ trang web hoạt động như một tập hợp Doctrine Nested Set. Về cơ bản nó chỉ là một vài trường, như id, parent_id, title, uri, được tạo, cập nhật. Bạn có thể thêm nhiều trường hơn nếu cần, nhưng đó là tiền đề cơ bản.

Chúng tôi sau đó sử dụng Zend_Navigation để hiển thị cây này thành menu cho trang web.

Zend_Navigation cũng có phương thức trợ giúp để tự động tạo một sơ đồ trang web XML, vì vậy chúng tôi có một bộ điều khiển và chế độ xem được thiết lập để hiển thị tài liệu XML đó. Sau đó chúng tôi đã viết một Plugin điều khiển hành động Zend, giám sát bộ điều khiển sơ đồ trang web và khi cập nhật được thực hiện, nó sẽ kiểm tra bản cập nhật cuối cùng và ping Google rằng sơ đồ trang web đã được cập nhật.

Tất cả các khái niệm này có thể dễ dàng được chuyển vào CI, tôi sẽ tưởng tượng.

Nếu không có trình trợ giúp chế độ xem sơ đồ trang web trong CI, bạn có thể sử dụng các lớp Điều hướng Zend, vì Zend được tách riêng lẻ.

Hoặc bạn chỉ có thể tạo tài liệu xml bằng CI, sử dụng tiêu chuẩn cho sơ đồ trang web tại đây.

http://www.sitemaps.org/protocol.php

+1

Bạn có viết sơ đồ trang web vào một tệp hoặc chỉ lưu vào bộ nhớ cache không? Để u liệt kê tất cả các url hoặc chỉ quan trọng nhất một lần? Làm thế nào để u ping google? – Manuel

+1

Hi Manuel. Bạn có thể xây dựng sơ đồ trang web của mình dần dần. Bắt đầu với quan trọng nhất và tiếp tục thêm theo thời gian. Có thể bạn sẽ muốn lưu vào bộ nhớ cache. Bạn có thể ping google bằng cách gửi yêu cầu HTTP tới www.google.com/webmasters/tools/ping?sitemap=sitemap_url và thay thế sitemap_url bằng phiên bản url được mã hóa của URL của sơ đồ trang web của bạn. – Travis

2

Giả sử bạn đang cố gắng để tạo ra một sitemap xml, không phải ở một html?

Tôi chưa làm điều này, và muốn thử nó sớm, nhưng những gì tôi sẽ làm là: thiết lập một công việc cron gọi một đường dẫn như example.com/index.php/sitemap. chức năng chỉ mục trong bộ điều khiển sơ đồ trang web của bạn sau đó sẽ chạy truy vấn để chọn tất cả tiêu đề của tất cả bài đăng của bạn + mọi thứ bạn cần để tạo url đầy đủ cho các mục đó và vì phần tử được yêu cầu trong giao thức sơ đồ trang web, khi mục nhập được cập nhật lần cuối . nếu bạn không có một trường trong db của bạn cho điều này, bạn có thể phải thêm nó vào.

thì đó chỉ là vấn đề lặp qua các kết quả và viết ra tệp xml có cấu trúc phù hợp. khi bạn đang lặp lại, bạn cũng phải quyết định mức ưu tiên, changefreq và tất cả các phần tử khác trên cơ sở mỗi lần nhập.

ive cũng đang xem phiên bản trả tiền là http://www.xml-sitemaps.com/ nên làm mọi thứ nhưng thiết lập cron cho bạn, với mức giá khá tốt và chạy trên máy chủ của riêng bạn. tôi không nghĩ rằng bạn có thể tự mình phát triển với giá trị 19,99USD trong thời gian của bạn. Và, ứng dụng này cũng thông báo cho các công cụ tìm kiếm nội dung mới, một phương pháp mà tôi chưa trình bày ở trên.

5

Mặc dù nội dung của bạn là động, bạn muốn sơ đồ trang web của mình tĩnh. Chắc chắn, cập nhật sơ đồ trang web mỗi ngày một lần nếu bạn muốn, HOẶC cập nhật nó bất cứ khi nào bạn đăng mục nhập blog mới ... nhưng không cố gắng tạo nó vào thời điểm được yêu cầu. Đó sẽ là một cơn ác mộng hiệu suất.

Tôi nghĩ sơ đồ trang web của Stackoverflow được cập nhật hàng ngày. Nó chứa 50.000 trang được thay đổi gần đây nhất. Sơ đồ trang web giúp với SEO (tối ưu hóa công cụ tìm kiếm).

Công thức cho thế hệ sitemap over here

0

Một update-frequency tham số trong cấu trúc sitemap cho công cụ tìm kiếm như thế nào thường xuyên trang web được cập nhật.

Đừng nhầm lẫn với URL của trang vì nó có thể được thay đổi thông qua nhiều phương pháp.

Đối stackoverflow, nó có thể là questions.php?id=1317539 cho trang này và ví dụ, cập nhật tần số được thiết lập để một phút cho questions.php

Vì vậy, mỗi phút, một sitemap mới được tạo ra cho trang web stackoverflow.

Cập nhật: This answer bởi Robert giải thích điều gì sẽ xảy ra với sơ đồ trang web của Stack Overflow khi câu hỏi mới được thêm vào hệ thống.

0

Giải pháp tốt nhất là để thêm vào apache của bạn .htaccess tập tin dòng sau sau RewriteEngine On

RewriteRule ^sitemap\.xml$ sitemap.php [L] 

và sau đó chỉ cần có một tập tin sitemap.php trong thư mục gốc của web site đó sẽ là bình thường truy cập qua http://yoursite.com/sitemap.xml, URL mặc định mà tất cả các công cụ tìm kiếm trước tiên sẽ tìm kiếm.

File sitemap.php phải một cái gì đó như thế này

<?php header('Content-type: application/xml; charset=utf-8') ?> 
<?php echo '<?xml version="1.0" encoding="UTF-8"?>' ?> 
<?include_once('./myVariables.php'); ?> 

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
    <url> 
    <loc><?php echo $URL1; ?></loc> 
    <lastmod>2005-01-01</lastmod> 
    <changefreq>monthly</changefreq> 
    </url> 
    <url> 
    <loc><?php echo $URL2; ?></loc> 
    <lastmod>2005-01-01</lastmod> 
    <changefreq>monthly</changefreq> 
    </url> 
</urlset> 

nó hoạt động :)

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