如何使mod_rewrite*not*在使用.htaccess时执行主目录扩展

如何使mod_rewrite*not*在使用.htaccess时执行主目录扩展,.htaccess,mod-rewrite,apache2,vhosts,.htaccess,Mod Rewrite,Apache2,Vhosts,文件路径:/Users/user\u name/Sites/example.com 可在以下位置浏览:http://localhost/~user\u 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+)\)$ rgb

文件路径:
/Users/user\u name/Sites/example.com

可在以下位置浏览:
http://localhost/~user\u 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
目录的vhost,它就会工作。我希望它能双向工作

那我该怎么做呢

我在MacOSX上运行Apache/2.2.15(Unix)

编辑
用户
站点
目录的
AllowOverride
设置为
All
。如果不是这样的话,重写根本不应该起作用。

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

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

神圣的上帝,这令人沮丧。但是我让它工作了

我试了很多东西。我原以为重写规则上的PT标志可以修复它,但没有

我仍然不知道如何停止主目录扩展,但我找到了一个解决方法。在重写规则之前,请使用
RewriteBase/~user\u name/example.com/chrome/
。这将覆盖重写的前缀(my config中的日志条目):

(2)[perdir/Users/colin/Sites/ajaxtest/]试图用/~colin/ajaxtest/替换前缀/Users/colin/Sites/ajaxtest//
更新


此解决方案在某种程度上起作用,但似乎会使重写引擎触发两次。。。一次用于内部重定向,然后再次用于内部重定向。我最终像其他提交者一样使用了VirtualHost。

我面临着类似的问题。有没有可能你碰巧找到了解决办法?@SaurabhNanda和OP,检查我的答案。希望它能帮助你,或者至少是其他人。Downvoter-想解释一下为什么你选择了Downvoter吗?这是一个错误的答案。允许覆盖也不能解决这个问题。
<SNIP> (2) [perdir /Users/colin/Sites/ajaxtest/] trying to replace prefix /Users/colin/Sites/ajaxtest/ with /~colin/ajaxtest/