htaccess - 重写到docroot index.html而不重定向

时间:2016-05-23 15:09:47

标签: .htaccess mod-rewrite

我需要构建一个RewriteRule来让docroot的index.html文件处理对名为doc的文件夹发出的所有请求。

以下是我所拥有的:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteRule ^doc/(.*) index.html  [DPI,NS]
</IfModule>

我添加了[DPI,NS]标志,试图强制此规则只执行一次,但是,我认为我遗漏了一些非常明显的东西,因为它进入了嵌套的请求循环,永远将后续请求添加到原始请求路径 - 即使没有标志。

当我访问:apache.dev:/doc/hello.htm时,这是后续请求日志的片段:

  

/doc/lib/lib/gui/lib/lib/gui/gui/lib/css/base.css

- 这很奇怪,因为所有这些3个字母的文件夹名都直接在docroot中 - 并且没有子目录。

当我指定目标路径绝对(从ie:http://开始)时,它会起作用,但是,我得到302(重定向) - 这不是什么我想要的。

当我将路径相对指定到我放置此index.html文件的子文件夹时,它完美地运行。

问题:

如何强制它按照我需要的方式(与相对路径一样)将其引用到docroot&#34; index.html&#34;文件 - 没有重定向?

任何答案/评论都将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:0)

它在生长路径时生成无限请求循环的原因是因为您在处理程序中引用路径的方式,如果处理程序是客户端的。

如果您有:<script src="some/file.js">,则请求会在当前document.href路径的目录中查找某些/ file.js

如果您将其引用为:<script src="/some/file.js">(注意,它以/开头) - 然后它会实际查看docroot;并且不会将后续请求追加到当前的href目录,这样就可以了。