环境: 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机箱中,我遇到了问题。
答案 0 :(得分:1)
尝试调整基本网址:
RewriteBase /~davis/rewrite/
答案 1 :(得分:1)
终于解决了!
如果我将DocumentRoot
设置到我的〜/ Sites目录或为该路径创建VirtualHost
,它就会开始工作。显然在用户目录设置中,Apache无法将物理路径映射到~username
别名。
感谢大家的投入!
答案 2 :(得分:0)
你可以试试RewriteBase,但除此之外,我认为你无能为力。
RewriteBase /~davis/rewrite/