htaccess重写XML站点地图和用户友好的站点地图

6
我有两个脚本:
  • xmlsitemap.php(Google XML网站地图)
  • sitemap.php(GUI用户友好的网站地图)
我想通过重写规则实现以下功能: 重写到site.com/sitemap.php
site.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

什么不起作用?你是从一个脚本的单个重写开始,并且已经让它工作了吗? - hakre
它将site.com/sitemap.xml重写为错误的sitemap.php。sitemap.xml应该重写为xmlsitemap.php。当另一个规则被注释掉时,两个规则都可以工作,问题是它们不能一起工作。 - Chris
1个回答

11

首先,重新添加 [L] 标志。其次,如果一个规则优先于另一个规则,请检查重写规则的正则表达式,使它们更好地匹配整个请求:

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

L标志将防止运行其他规则,如果已经匹配了一个规则(但仍然可以触发内部重定向,请参见END标志而不是L标志)。


谢谢,可以了。我刚刚添加了另一个规则,以适应site.com/sitemap/的情况。 - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接