3

文件路径:/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)

EDIT AllowOverride设置All为用户Sites目录。如果不是重写,根本就不应该工作。

4

3 回答 3

1

我花了半天时间为此绞尽脑汁,我能找到的唯一解决方案是创建一个新的 VirtualHost,并将 DocumentRoot 设置为用户的主目录。

于 2012-02-28T14:16:11.543 回答
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。

于 2012-05-31T20:05:01.077 回答
-1

允许在您的主目录的配置文件中覆盖。

于 2010-12-14T13:13:05.263 回答