Mod重写2部分问题

问题描述:

我想知道如何使用mod_rewrite重写下面的URL?有没有一个在线教程,解释mod_rewrite傻瓜?Mod重写2部分问题

如何重写此URL。

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

http://www.example.com/sitemap.xml 
+1

Dupe of http://*.com/q/4457835/52721。 @sleep - 你刚刚问过这个问题。继续努力吧,我们不会在这里遇到麻烦。 – Robert 2010-12-16 08:42:03

+0

@Robert:我投票结束,但这篇文章自那时以来一直受到关注,所以我将其标记为mod评论,并建议将这两个问题合并。 – AgentConundrum 2010-12-16 09:27:04

+0

够公平的。我认为,合并是真的要走的路。 – Robert 2010-12-16 09:28:09

我建议:

RewriteRule ^/sitemap.php$ /sitemap.xml 

至于教程,你尝试过官方Apache mod_rewrite Introduction? 接下来,在URL Rewriting GuideAdvanced URL Rewriting Guide中有很多有用的例子......它们可能很复杂,但它确实有许多常见的重写任务的例子。

+0

RewriteRule没有工作:(谢谢教程,虽然 – HELP 2010-12-16 06:34:44

RewriteRule sitemap.php sitemap.xml 

这应该做到这一点。

+0

这不起作用 – HELP 2010-12-16 08:45:32

+0

当我测试它时工作......您可能需要在上面添加'RewriteEngine On',如果您将它放入.htaccess文件 – 2010-12-16 08:51:36

+0

它的上,但它仍然不工作,它根本不显示xml数据 – HELP 2010-12-16 08:54:20

对此有几个选项,具体取决于您希望如何工作。

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

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

默认将做302重定向,但你可以通过添加状态代码将其更改为301作为第一个参数,即:

Redirect 301 /sitemap.php http://www.example.com/sitemap.xml 

在这两种情况下,这将导致往返返回给浏览器,这样地址栏会改变以显示新的文件名sitemap.xml。如果你不希望出现这种情况,你可以使用RewriteRule指令:

RewriteRule ^sitemap.php$ /sitemap.xml [L] 

注意,这是你将如何写从所谓的“按目录中,”这只是意味着该规则是规则从.htaccess文件或<Directory>块中写入。如果您是从主配置中编写它,那么您需要一个前导斜杠(即^/sitemap.php$)来表明规则要与文档根匹配。

+0

这不起作用 – HELP 2010-12-16 08:46:00