文件路径:/Users/user_name/Sites/example.com
浏览:http://localhost/~user_name/example.com/
在子目录(chrome
)中,我得到了.htaccess
,如下所示:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^rgba\((\d{1,3}%?,\s?\d{1,3}%?,\s?\d{1,3}%?,\s?[0-1]?\.?\d+)\)$ rgba.php?rgba=$1 [PT]
这符合以下请求:
http://localhost/~user_name/example.com/chrome/rgba(255,255,255,0.5)
并且应该将请求重写为:
http://localhost/~user_name/example.com/chrome/rgba.php?rgba=(255,255,255,0.5)
我将rgba.php放在chrome
目录中。我仍然收到此错误消息:
The requested URL /Users/user_name/Sites/example.com/chrome/rgba.php was not found on this server.
我阅读了手册中关于主目录扩展和[PT]标志的部分,但没有区别。
如果我建立了一个指向example.com
目录的虚拟主机,它可以工作。我希望它能双向工作= P
那我该怎么办?
我在Mac OS X上运行Apache / 2.2.15(Unix)
修改
用户AllowOverride
目录的All
设置为Sites
。如果不是重写就不应该有效。
答案 0 :(得分:1)
我花了半天时间绞尽脑汁,我能找到的唯一解决方案就是创建一个新的VirtualHost,并将DocumentRoot设置为用户的主目录。
答案 1 :(得分:1)
圣洁的上帝令人沮丧。但是我有它的工作。
我尝试了很多东西。我认为 RewriteRule上的PT标志会修复它,但是没有。
我仍然不知道如何停止主目录扩展,但我想出了一个解决方法。在RewriteRule
之前,请使用RewriteBase /~user_name/example.com/chrome/
。这会覆盖重写的前缀(来自我的配置的日志条目):
<SNIP> (2) [perdir /Users/colin/Sites/ajaxtest/] trying to replace prefix /Users/colin/Sites/ajaxtest/ with /~colin/ajaxtest/
<强>更新强>
这个解决方案有点工作,但它似乎使重写引擎触发两次......一次用于内部重定向,之后再次。我最后只使用了像其他提交者一样的VirtualHost。
答案 2 :(得分:-1)
允许在您的主目录的配置文件中覆盖。