2011-07-06 32 views
5

Tôi có hai kịch bản:htaccess sitemap viết lại XML và thân thiện với người sitemap

  • xmlsitemap.php (Google XML sitemap)
  • sitemap.php (sử dụng giao diện đồ họa thân thiện sitemap)

Tôi muốn để đạt được điều này với các quy tắc viết lại:

Viết lại trang web.com/sitemap.php ngồi e.com/sitemap
site.com/sitemap/

Rewrite để site.com/xmlsitemap.php
site.com/sitemap.xml

Dưới đây là những gì tôi đã cố gắng. Vấn đề là nó viết lại sitemap.xml để sitemap.php (GUI).

Options +FollowSymlinks 
RewriteEngine On 

RewriteRule sitemap.xml xmlsitemap.php 
RewriteRule sitemap sitemap.php 

# also tried using [L] option on both 
+0

Điều gì không hiệu quả? Bạn đã bắt đầu với một lần viết lại duy nhất cho một tập lệnh duy nhất và bạn đã làm nó chưa? – hakre

+0

Nó viết lại site.com/sitemap.xml thành sitemap.php sai. sitemap.xml nên viết lại thành xmlsitemap.php. Cả hai quy tắc đều hoạt động khi người khác nhận xét, vấn đề là họ không làm việc cùng nhau. – Chris

Trả lời

7

Trước hết, hãy thêm lại cờ [L]. Thứ hai, nếu một quy tắc thay thế khác, kiểm tra quy tắc viết lại regex của bạn để làm cho chúng phù hợp tốt hơn, giống như toàn bộ yêu cầu:

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

Cờ L sẽ ngăn chặn để chạy quy tắc bổ sung nếu một đã phù hợp (nhưng vẫn có thể kích hoạt chuyển hướng nội bộ, xem số END flag instead of the L flag).

+0

Cảm ơn, công trình. Tôi vừa thêm một quy tắc khác có dấu trang/vào trang web.com/sitemap/ – Chris

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