我正在尝试将请求从文件夹转换为该文件夹中的另一个子文件夹。让我解释一下:
转换: localhost / myproject / build / css / style.css
收件人: localhost / myproject / build / dev / css / style.css
因此,我需要在'build /'文件夹之后为请求添加'/ dev'。我有什么?:
RewriteCond %{HTTP_HOST} ^localhost$ [NC]
RewriteRule ^build/(.*) build/dev/$1
我从Apache获得了一个无限循环:
[Thu Apr 24 17:56:39.721756 2014] [核心:错误] [pid 6980:tid 1660] [client :: 1:55569] AH00124:请求超出10内部限制 由于可能的配置错误而重定向。使用 'LimitInternalRecursion'可在必要时增加限制。使用 “LogLevel debug”以获得回溯。
我知道发生了什么,Apache正在这样做:
build/css/style.css (original request)
build/dev/css/style.css
build/dev/dev/style.css
build/dev/dev/dev/style.css
.... to the infinite
所以我只需要抓住一次重写请求。有什么想法吗?
答案 0 :(得分:0)
这应该有效:
RewriteCond %{HTTP_HOST} ^localhost$ [NC]
RewriteCond %{REQUEST_URI} !^/build/dev/(.*)
RewriteRule ^build/(.*) /build/dev/$1 [R=301]
以上内容将检查并查看网址中是否有build/dev/
,它是否会重定向。如果dev/
位于网址中,则表示您要添加build/
,这会导致重定向循环。
答案 1 :(得分:0)
添加/dev
后,您需要使用条件跳过添加:
RewriteCond %{HTTP_HOST} ^localhost$ [NC]
RewriteRule ^build/((?!dev/).*)$ build/dev/$1 [L,NC]