Apache 永久重定向不起作用

Apache 永久重定向不起作用

尝试在 Apache 中重定向旧 URL。但我搞不清楚这到底是什么问题:

<Directory "/home/site/www/">
RewriteEngine On
Options +FollowSymLinks
Redirect permanent /test http://www.google.com
</Directory>

重定向根本不起作用。我是不是漏掉了什么?

我在浏览器中输入http://站点/测试然后它返回 404 未找到错误。Apache 日志显示:

[Mon May 23 18:07:09 2011] [error] [client XXXXXX] File does not exist: /home/site/www/test

Apache/2.2.16(Ubuntu)

答案1

我以前没有遇到过这种情况,但当你将重定向放在 Directory 指令范围之外时它确实有效,这似乎表明 Apache 在接收/test请求时不匹配该 Directory 指令。文档说当请求指向指定目录或其中的某个子目录时,目录应该匹配 - 但 Apache 可能首先检查是否test是有效的子目录,如果找不到它,它就不会在该块内查找。

我不明白为什么将重定向留在块之外不能达到您想要的效果 -/home/site/www文档根目录不是吗?如果您确实需要将此重定向限制到站点的某些部分,请使用Location-它会独立于服务器中的物理路径处理 URL,考虑到您的服务器中实际上不存在Directory物理路径,这可能是您所需要的。test

如果需要更复杂的重定向(例如,如果您想要重定向所有以 开头的 URL /test,而不仅仅是指向 的请求/test),请考虑使用 RedirectMatch:

RedirectMatch ^/test.* http://www.google.com

Redirect将重定向/test/examplehttp://www.google.com/example而不是平原http://www.google.com,这可能不是您想要的。这RedirectMatch将丢弃 之后的所有内容/test

相关内容