Mod rewrite 修改重写2部分问题

Mod rewrite 修改重写2部分问题,mod-rewrite,Mod Rewrite,我想知道如何使用mod_rewrite重写下面的URL?有没有一个在线教程可以解释为傻瓜重写mod_ 如何重写此URL http://www.example.com/sitemap.php 到 我建议: RewriteRule ^/sitemap.php$ /sitemap.xml 至于教程,你试过官方的吗? 接下来,在和中有许多有用的例子。。。它们可能很复杂,但它确实有许多常见重写任务的示例 RewriteRule sitemap.php sitemap.xml 这应该就可以了。根据您

我想知道如何使用mod_rewrite重写下面的URL?有没有一个在线教程可以解释为傻瓜重写mod_

如何重写此URL

http://www.example.com/sitemap.php 

我建议:

RewriteRule ^/sitemap.php$ /sitemap.xml
至于教程,你试过官方的吗? 接下来,在和中有许多有用的例子。。。它们可能很复杂,但它确实有许多常见重写任务的示例

RewriteRule sitemap.php sitemap.xml

这应该就可以了。

根据您希望它如何工作,您有两个选择

将一个文件重定向到另一个文件的最简单方法是简单地使用
redirect
指令:

 Redirect /sitemap.php http://www.example.com/sitemap.xml
 RewriteRule ^sitemap.php$ /sitemap.xml [L]
默认情况下,这将执行302重定向,但您可以通过添加状态代码作为第一个参数将其更改为301,即:

 Redirect 301 /sitemap.php http://www.example.com/sitemap.xml
在这两种情况下,这将导致返回浏览器的往返,因此地址栏将更改为显示新的
sitemap.xml
filename。如果您不想这样做,可以使用
RewriteRule
指令:

 Redirect /sitemap.php http://www.example.com/sitemap.xml
 RewriteRule ^sitemap.php$ /sitemap.xml [L]

请注意,这是从所谓的“每目录上下文”写入规则的方式,这意味着规则是从
.htaccess
文件或
块中写入的。如果您是从主配置中编写的,则需要一个前导斜杠(即
^/sitemap.php$
)来表明您的意思是让规则与文档根匹配。

重写规则不起作用:(谢谢你的指导思想。@sleep-你刚刚问了这个问题。继续努力,我们这里不会有颠簸。@Robert:我投票决定结束,但这篇文章从那时起就引起了一些关注,所以我把它标记为mod review,并建议将这两个问题合并。很公平。合并确实是一条路,我认为ink。我想你想把sitemap.xml重写为sitemap.php,而不是反过来,不是吗?你想让sitemap.php处理对sitemap.xml的请求,这与你的要求相反。在我测试它时工作正常……如果你把它放到.htaccess文件中,你可能需要在上面添加
重写引擎它仍然不工作,根本不显示xml数据。它上面有没有一个重写条件行没有匹配的重写规则,或者还有其他重写规则?你可能必须先把这一行放在前面(并在末尾添加“[L]”,以使mod_rewrite在更改后停止)。我认为它不会有任何效果(它不在我的测试框中),但是规则中的“www.example.com”应该是没有^的“www.example.com”。这是一个o类型,但我仍然无法通过
RewriteRule sitemap.php sitemap.xml
工作得到它。