RewriteRule ^[^/.]*$ new/$0
每当我输入mydomain.com/somepath/to/somewhere
时,它都会抛出404
它应该转换为:mydomain.com/new/somepath/to/somewhere
答案 0 :(得分:1)
是否需要前导斜杠取决于您是在httpd.conf文件中还是在.htaccess中或httpd.conf中的容器中执行此操作。
为避免重写循环,您需要使用RewriteCond来确保您不匹配new /
不确定$ 0语法是否有效而没有捕获括号?
答案 1 :(得分:0)
让我们快速解析你的规则:
在开始时锚定,匹配任何不是/不是任何字符的内容,0或更多次,最后锚定。
换句话说,它永远不会匹配任何东西,因为 < / p>
.
匹配任何东西(因此[^.
]与任何东西都不匹配。)
我认为你的意思是:
RewriteCond %{REQUEST_URI} !^/?new/
RewriteRule ^/?(.+)$ new/$1 [L]
这是读
在开始时锚定,匹配0或1 /,后跟任意一个或多个字符(稍后保存此匹配),最后锚定。
(根据Devin Ceartas的回答,RewriteCond会阻止重写/ new /目录中的内容。[L]会阻止任何进一步的重定向)