RewriteRule ^[^/.]*$ new/$0
每次我键入mydomain.com/somepath/to/somewhere
它抛出404需要重写任何字符(@#%^&* /!)
它应该翻译为:mydomain.com/new/somepath/to/somewhere
RewriteRule ^[^/.]*$ new/$0
每次我键入mydomain.com/somepath/to/somewhere
它抛出404需要重写任何字符(@#%^&* /!)
它应该翻译为:mydomain.com/new/somepath/to/somewhere
让您解析规则确实很快:在开始
锚,匹配任何不是/或没有任何字符,0或更多次,停泊在年底。
换句话说,它永远不会匹配任何东西,因为.
匹配任何东西(因此[^.
]不匹配任何东西)。
我想你的意思是:
RewriteCond %{REQUEST_URI} !^/?new/
RewriteRule ^/?(.+)$ new/$1 [L]
这在开始时读取
锚,匹配0或1 /,其次是1个或多个任意字符(节省这场比赛后面再说),锚最后。
(本的RewriteCond防止在/新/目录重写的东西,按德文Ceartas的答案。在[L]阻止进一步的重定向)
无论你是否需要一个领先斜杠将取决于您是在httpd.conf文件中还是在.htaccess中或httpd.conf中的容器中执行此操作。
为了避免重写循环,你会想用的RewriteCond,以确保你不配套新/
不知道,如果$ 0语法作品,未经捕获括号?
在所有的正则表达式语言中,我看到,字符是字面内[ ] – erikkallen 2009-10-23 20:28:33
哎呀,你可能是对的。尽管如此,RegEx仍然是错误的。 – Powerlord 2009-10-23 20:29:19
由于可能的配置错误,请求超出了10个内部重定向的限制。如果需要,使用'LimitInternalRecursion'来增加限制。使用'LogLevel debug'来获得回溯。 – gwegaweg 2009-10-23 20:31:38