2011-07-06 104 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