Mod rewrite 正在尝试修改或重写目录

Mod rewrite 正在尝试修改或重写目录,mod-rewrite,apache,Mod Rewrite,Apache,我正在尝试使用httpd进行mod_重写 我想要资料来源: www.foo.bar.com/abc/ 要转到目的地: www.foo.bar.com/def/ 因此,我得出以下结论: RewriteRule ^abc/([^/\.]+).$ def/$1 [L] 但我不想只为那一个页面,我希望所有后续页面的url也重写 示例www.foo.bar.com/abc/blahblah1.html转到www.foo.bar.com/def/blahblah1.html 问题是我认为这是不对的,因

我正在尝试使用httpd进行mod_重写

我想要资料来源:

www.foo.bar.com/abc/
要转到目的地:

www.foo.bar.com/def/
因此,我得出以下结论:

RewriteRule ^abc/([^/\.]+).$ def/$1 [L]
但我不想只为那一个页面,我希望所有后续页面的url也重写

示例
www.foo.bar.com/abc/blahblah1.html
转到
www.foo.bar.com/def/blahblah1.html

问题是我认为这是不对的,因为它似乎不起作用

RewriteEngine On
RewriteRule ^/abc/(.*)$ /def/$1
将其简化一点,因为我不确定为什么在任何给定的“/”或“.”处停止重写-可能会导致一些奇怪的行为

这是假设您正在
.htaccess
(文档根目录中)而不是(比如)httpd vhosts.conf(两者之间的路径可能略有不同)中执行重写


这假设
.htaccess
在您的DOCROOT中。始终为文档根指定一个基,即/。不要包含每个目录的前导/for(在
.htaccess
中)。

^/abc
将永远不会匹配每个目录上下文中的任何内容好的一点-我得到了一个大概的答案;vhosts中的前导“/”,htaccess中的前导“/”是正确的。是的,我不明白为什么重写引擎会在每目录上下文中删除
/
,而不是其他。我想这在历史上是一个愚蠢的决定,因为向后兼容性问题,他们无法撤消。如果这不是因为DOCROOT中的.htacces和apache只是在jboss as前面使用的呢?好的,这是用于哪个
htaccess
文件?它唯一可以使用的另一个是
DOCROOT/abc/.htaccess
,在这种情况下,基础是
/abc
,规则是:
RewriteRule^(.*)/def/$1[L,NS]
RewriteEngine On
RewriteBase   /

RewriteRule ^abc/(.*)   def/$1               [L,NS]