【问题标题】:htaccess rewrite XML sitemap and user friendly sitemaphtaccess 重写 XML 站点地图和用户友好的站点地图
【发布时间】:2026-02-09 01:05:01
【问题描述】:

我有两个脚本:

  • xmlsitemap.php(谷歌 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

【问题讨论】:

  • 什么不起作用?您是否开始对单个脚本进行一次重写并让它工作?
  • 它将 site.com/sitemap.xml 重写为 sitemap.php 这是错误的。 sitemap.xml 应该重写为 xmlsitemap.php。当另一个规则被注释掉时,两个规则都有效,问题是它们不能一起工作。

标签: php apache .htaccess mod-rewrite


【解决方案1】:

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

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

L 标志将阻止运行已匹配的其他规则(但仍可触发内部重定向,另请参见 END flag instead of the L flag)。

【讨论】:

  • 谢谢,工作。我刚刚添加了另一个带有尾随 / 的规则来容纳 site.com/sitemap/