内部重定向到Apache中的另一个文件

时间:2009-10-26 14:19:49

标签: apache mod-rewrite

我希望网址http://domain.com/sitemap.xml在内部指向htdocs中的文件sitemap_book.xml,而不会有任何301/302重定向。

请为此建议重写规则。

我想出了

  RewriteCond %{REQUEST_FILENAME} "sitemap.xml"
  RewriteRule ^(.*)$ sitemap_book.xml [R]

但如果没有[R]则不起作用。提出了400个错误请求

当我使用[P]时,我得到502代理错误。我尝试使用以下代码设置mod_proxy

<IfModule mod_proxy.c>
ProxyRequests On

<Proxy *>
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Proxy>
</IfModule>

这给了403 Forbidden。

1 个答案:

答案 0 :(得分:1)

REQUEST_FILENAME 始终是绝对文件系统路径,而 REQUEST_URI 始终是绝对URL路径。因此,您的示例宁愿使用RewriteCond %{REQUEST_URL} =/sitemap.xml=:词典比较),也可以直接使用RewriteRule模式:

RewriteRule ^/sitemap\.xml$ sitemap_book.xml

此外,R标志始终导致外部重定向而不是内部重定向。所以就这样离开吧:

RewriteRule ^/sitemap\.xml$ sitemap_book.xml