服务器 Gind.cn

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

如何在redirect上模拟Apache 标志?

出于商业原因,我为Apache 2.2.22(mod_rewrite)创build了以下重写规则: RewriteRule /site/(\d+)/([^/]+)\.html /site/$2/$1 [R=301,L] 如果给出了这样的url: http: //www.mydomain.com/site/ 0999 / document.html 被翻译成: http : //www.mydomain.com/site/ document / 0999 .html 这是预期的情况。 但是,有名称只是数字的文件。 所以考虑下面的情况: http://www.mydomain.com/site/ 0055/0666 .html 获取翻译成: http://www.mydomain.com/site/ 0666/0055 .html 这也符合我的重写规则模式,所以我最终浏览器的“网页导致了太多的redirect”错误。 我研究了很长时间,没有find“好”的解决scheme。 我试过的东西: 使用[END]标志。 不幸的是我的Apache版本不可用,也不适用于redirect。 在RewriteCond子句上使用%{ENV:REDIRECT_STATUS}来结束重写过程(L)。 出于某种原因,%{ENV:REDIRECT_STATUS}在我尝试的所有时间都是空的。 如果我的规则匹配,添加一个带有Header子句的响应头,然后检查这个头( 详情请看这里 )。 似乎a)REDIRECT_addHeader为空b)标题不能明确地设置在301响应上。 还有另一种select。 我可以设置一个查询参数的redirectURL,这表明它来自redirect,但我不喜欢这个解决scheme,因为它似乎hacky。 有没有一种方法可以完成[END]标志的function,但是在旧的Apache版本中呢? 比如我的2.2.22。 谢谢!