使用mod_rewrite的相对URL

时间:2009-08-28 15:51:27

标签: apache macos .htaccess mod-rewrite

环境: Apache 2附带Mac OS X Leopard;在默认的httpd.conf中没有大的改动。

我正在通过我的.htaccess设置一些重写但是我无法使用相对于当前目录的目标路径。

# URL: http://localhost/~davis/rewrite/.htaccess
# File: /Users/davis/Sites/rewrite/.htaccess

RewriteRule go.php target.php

# Not working

我希望该规则可以将用户重定向到http://localhost/~davis/rewrite/target.php。它正在解析到正确的物理路径,但是给我一个404说路径/Users/davis/Sites/rewrite/target.php不存在。

如果我提供完整的网址,它会很有用。

# URL: http://localhost/~davis/rewrite/.htaccess
# File: /Users/davis/Sites/rewrite/.htaccess

RewriteRule go.php /~davis/rewrite/target.php

# Works

我在这里遗漏了什么吗?什么东西要在httpd.conf中设置?

谢谢!

编辑:相对URL在我的Linux服务器上正常运行。在我当地的Mac机箱中,我遇到了问题。

3 个答案:

答案 0 :(得分:1)

尝试调整基本网址:

RewriteBase /~davis/rewrite/

答案 1 :(得分:1)

终于解决了!

如果我将DocumentRoot设置到我的〜/ Sites目录或为该路径创建VirtualHost,它就会开始工作。显然在用户目录设置中,Apache无法将物理路径映射到~username别名。

感谢大家的投入!

答案 2 :(得分:0)

你可以试试RewriteBase,但除此之外,我认为你无能为力。

RewriteBase /~davis/rewrite/