【问题标题】:adding index.cfm to url seems to ignore .htaccess将 index.cfm 添加到 url 似乎会忽略 .htaccess
【发布时间】:2012-08-07 19:14:48
【问题描述】:

我试图禁止访问我的 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 

注意最后一个请求好像忽略了重写规则,怎么会这样?

(除根目录下的 index.cfm 外,文件系统中不存在上述所有文件)

EDIT同样,.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]

【问题讨论】:

  • 你的规则只有RewriteRule ^(.*)$ index.cfm [QSA,L],没有以前的规则或条件吗?
  • @JonLin 在我的测试用例中是的
  • 几个月前我和我的同事遇到了同样的问题,我们仍然没有找到解决方案。 stackoverflow.com/questions/7949746/… 赞成的答案解释了为什么会发生这种情况,但据我所知,仍然没有解决方案。基本上,在 apache 处理 .htaccess 文件之前,请求会被传递给 railo。
  • 我们当前的解决方法是为此目的使用 missingTemplateHandler。
  • 您使用的是什么连接器? mod_proxy 还是 mod_jk?

标签: apache .htaccess mod-rewrite coldfusion railo


【解决方案1】:

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

.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>

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

我希望在 .htaccess 中找到解决方案,但似乎由于树脂 / apache 连接中的错误,这还不能工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 2021-10-28
    • 2016-09-30
    • 2016-03-16
    • 2014-02-03
    • 2012-03-11
    相关资源
    最近更新 更多