尝试在 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/example
至http://www.google.com/example而不是平原http://www.google.com,这可能不是您想要的。这RedirectMatch
将丢弃 之后的所有内容/test
。