将index.cfm添加到url似乎忽略了.htaccess

时间:2012-08-06 10:31:58

标签: apache .htaccess mod-rewrite coldfusion railo

我试图禁止访问我的webApp中的某些文件夹,但似乎在某处使用index.cfm会有一些例外...

对于这个例子,我只使用下面的mod_rewrite规则:

RewriteRule ^(.*)$ index.cfm [QSA,L]

使用结果访问以下网址:

/index.cfm //->/index.cfm naturally
/test/test.html //->/index.cfm 
/test/ //->/index.cfm 
/test/test.cfm //->/index.cfm 
/test/index.cfm //->/test/index.cfm 

请注意,最后一个请求似乎忽略了重写规则,怎么会发生这种情况?

(上述所有文件都不存在于文件系统中,但root中的index.cfm除外)

编辑,.htaccess文件也放在根目录中

编辑2 我添加了一个RewriteLog来查看最新情况,肯定有区别,但我不明白为什么......

/test/index.html

[rid#15d1048/initial] (2) init rewrite engine with requested uri /test/index.html
[rid#15d1048/initial] (1) pass through /test/index.html
[rid#15d1048/initial] (3) [perdir C:/my/local/dir/] add path info postfix: C:/my/local/dir/test -> C:/my/local/dir/test/index.html
[rid#15d1048/initial] (3) [perdir C:/my/local/dir/] strip per-dir prefix: C:/my/local/dir/test/index.html -> test/index.html
[rid#15d1048/initial] (3) [perdir C:/my/local/dir/] applying pattern '^(.*)$' to uri 'test/index.html'
[rid#15d1048/initial] (2) [perdir C:/my/local/dir/] rewrite 'test/index.html' -> 'index.cfm'
[rid#15d1048/initial] (3) [perdir C:/my/local/dir/] add per-dir prefix: index.cfm -> C:/my/local/dir/index.cfm
[rid#15d1048/initial] (2) [perdir C:/my/local/dir/] strip document_root prefix: C:/my/local/dir/index.cfm -> /index.cfm
[rid#15d1048/initial] (1) [perdir C:/my/local/dir/] internal redirect with /index.cfm [INTERNAL REDIRECT]
[rid#15cb4c0/initial/redir#1] (2) init rewrite engine with requested uri /index.cfm
[rid#15cb4c0/initial/redir#1] (1) pass through /index.cfm
[rid#15cb4c0/initial/redir#1] (3) [perdir C:/my/local/dir/] strip per-dir prefix: C:/my/local/dir/index.cfm -> index.cfm
[rid#15cb4c0/initial/redir#1] (3) [perdir C:/my/local/dir/] applying pattern '^(.*)$' to uri 'index.cfm'
[rid#15cb4c0/initial/redir#1] (2) [perdir C:/my/local/dir/] rewrite 'index.cfm' -> 'index.cfm'
[rid#15cb4c0/initial/redir#1] (3) [perdir C:/my/local/dir/] add per-dir prefix: index.cfm -> C:/my/local/dir/index.cfm
[rid#15cb4c0/initial/redir#1] (1) [perdir C:/my/local/dir/] initial URL equal rewritten URL: C:/my/local/dir/index.cfm [IGNORING REWRITE]

/test/index.cfm

[rid#15ca1a0/initial] (2) init rewrite engine with requested uri /test/index.cfm
[rid#15ca1a0/initial] (1) pass through /test/index.cfm
[rid#15ca1a0/initial] (3) [perdir C:/my/local/dir/] add path info postfix: C:/my/local/dir/test -> C:/my/local/dir/test/index.cfm
[rid#15ca1a0/initial] (3) [perdir C:/my/local/dir/] strip per-dir prefix: C:/my/local/dir/test/index.cfm -> test/index.cfm
[rid#15ca1a0/initial] (3) [perdir C:/my/local/dir/] applying pattern '^(.*)$' to uri 'test/index.cfm'
[rid#15ca1a0/initial] (2) [perdir C:/my/local/dir/] rewrite 'test/index.cfm' -> 'index.cfm'
[rid#15ca1a0/initial] (3) [perdir C:/my/local/dir/] add per-dir prefix: index.cfm -> C:/my/local/dir/index.cfm
[rid#15ca1a0/initial] (2) [perdir C:/my/local/dir/] strip document_root prefix: C:/my/local/dir/index.cfm -> /index.cfm
[rid#15ca1a0/initial] (1) [perdir C:/my/local/dir/] internal redirect with /index.cfm [INTERNAL REDIRECT]

1 个答案:

答案 0 :(得分:0)

不是我正在寻找的完美答案,但这是我为了得到相同的结果所做的:

.htaccess我添加以下行以转发未由railo处理的任何文件:

RewriteCond %{REQUEST_URI} ^/(my|forbidden|folders)
RewriteRule ^(.*)$ /index.cfm/some/page [L]

application.cfc我添加以下行以转发由railo处理的文件:

<cfif Find(listFirst(arguments.targetPage, "/"), "my,forbidden,folders")>
    <cfset GetPageContext().Forward("/index.cfm/some/page")>
</cfif>

这样我可以在不更改请求的网址的情况下显示另一个页面。

我希望在.htaccess中找到一个解决方案但似乎因为树脂/ apache连接中的一个错误而无法正常工作。