Mod rewrite 正在尝试修改或重写目录
我正在尝试使用httpd进行mod_重写 我想要资料来源: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 问题是我认为这是不对的,因
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]