【问题标题】:internally redirecting to another file in Apache内部重定向到 Apache 中的另一个文件
【发布时间】:2010-12-10 03:39:42
【问题描述】:

我希望 url 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。

【问题讨论】:

    标签: apache mod-rewrite


    【解决方案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
    

    【讨论】:

    • 这也不起作用。它说 400 错误请求。当我添加 [R] 使其成为外部重定向时工作。任何想法为什么 apache 没有选择内部重定向?
    猜你喜欢
    • 1970-01-01
    • 2019-03-07
    • 2021-06-16
    • 2012-01-22
    • 2019-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多