Regex 将旧站点地图重定向到new sitemap.xml

Regex 将旧站点地图重定向到new sitemap.xml,regex,apache,.htaccess,mod-rewrite,rewrite,Regex,Apache,.htaccess,Mod Rewrite,Rewrite,我不小心有三个允许的站点地图URL: domain.com/sitemap.php domain.com/sitemap domain.com/sitemap.xml 如何将它们全部重定向到domain.com/sitemap.xml,站点地图文件是sitemap.php 我一直在尝试一些不同的扩展,但它们似乎会导致.xml和.php扩展之间不断循环,它会中断 #Sitemap RewriteRule ^sitemap.xml sitemap.php [L, R=301] RewriteRul

我不小心有三个允许的站点地图URL:

domain.com/sitemap.php
domain.com/sitemap
domain.com/sitemap.xml
如何将它们全部重定向到
domain.com/sitemap.xml
,站点地图文件是
sitemap.php

我一直在尝试一些不同的扩展,但它们似乎会导致
.xml
.php
扩展之间不断循环,它会中断

#Sitemap
RewriteRule ^sitemap.xml sitemap.php [L, R=301]
RewriteRule ^sitemap$ http://domain.com/sitemap.xml [R=301]  
好的,请尝试以下代码:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(sitemap)(/|\.php)?\s [NC]
RewriteRule ^ /%1.xml [R=301,L]

RewriteRule ^(sitemap)\.xml$ /$1.php [L,NC]
好的,请尝试以下代码:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(sitemap)(/|\.php)?\s [NC]
RewriteRule ^ /%1.xml [R=301,L]

RewriteRule ^(sitemap)\.xml$ /$1.php [L,NC]

更新的问题,我的站点地图文件是
sitemap.php
,这提供了一个404?,所以您希望将外部站点地图URL保留为
domain.com/sitemap.xml
,但希望从
domain.com/sitemap.php
提供服务?似乎工作正常,谢谢,第一行匹配的是什么?第一行实际上从
/sitemap
/sitemap.php
/sitemap.xml
进行外部重定向,但第二条规则将执行从
/sitemap.xml
/sitemap.php
的无声重写。更新的问题是,我的sitemap文件是
sitemap.php
,这提供了一个404?,所以您希望将外部站点地图URL保留为
domain.com/sitemap.xml
,但希望从
domain.com/sitemap.php
提供服务?似乎工作得很好,谢谢,第一行与什么匹配?第一行实际上从
/sitemap
/sitemap.php
/sitemap.xml
进行外部重定向,但第二条规则将执行从
/sitemap.xml
/sitemap.php
的无声重写