1

webAppの特定のフォルダーへのアクセスを禁止しようとしていますが、どこかでindex.cfmを使用することに例外があるようです...

この例では、次のmod_rewriteルールのみを使用しています。

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

結果を含む次のURLにアクセスします。

/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を除いて、上記のすべてのファイルがファイルシステムに存在するわけではありません)

また、編集、.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]
4

1 に答える 1

0

私が探していた完璧な答えではありませんが、これは私が同じ結果を得るためにしたことです:

私は次の行を追加して、.htaccessrailoで処理されていないファイルを転送します。

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

私は次の行を追加して、application.cfcrailoによって処理されたファイルを転送します。

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

このようにして、要求されたURLを変更せずに、別のページを表示できます。

私はちょうどで解決策を望んでいました.htaccessが、レジン/アパッチ接続のバグのため、これはまだ機能しないようです。

于 2012-08-07T11:14:48.430 に答える