2011-07-06 75 views
5

我有兩個腳本:htaccess的重寫XML網站地圖和用戶友好的網站地圖

  • xmlsitemap.php(谷歌XML網站地圖)
  • sitemap.php(GUI用戶友好的網站地圖)

我想與重寫規則來實現這一目標:

改寫爲site.com/sitemap.php
坐e.com/sitemap
site.com/sitemap/

改寫爲site.com/xmlsitemap.php
site.com/sitemap.xml

這是我都試過了。問題是它將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

什麼不行?你是否已經開始對單個腳本進行一次重寫,並使其工作? – hakre

+0

它將site.com/sitemap.xml重寫爲sitemap.php,這是錯誤的。 sitemap.xml應該重寫爲xmlsitemap.php。兩個規則在另一個被註釋掉時都起作用,問題在於它們不能一起工作。 – Chris

回答

7

首先,重新添加[L]標誌。其次,如果一個規則取代了其他的,請檢查您的重寫規則的正則表達式,以使他們更好地匹配,就像整個請求:

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

L標誌將阻止運行額外的規則,如果一個已經匹配(但仍可以觸發內部重定向,請參閱END flag instead of the L flag)。

+0

謝謝,作品。我剛剛添加了一個尾隨/容納site.com/sitemap/的規則 – Chris