1

在对 SO 和 SF 进行了详尽的搜索后,我发现这相当令人担忧。所有相关的答案都会导致 Apache 2.4 崩溃,我不知道我做错了什么,它应该很简单。

为简洁起见,这里是代码,虽然我已经分别测试了每个代码,但并非所有代码都如下所示:

    RewriteRule ^(.*)$ .anon.dir/Repo/data/native/fuse/$1 [L]
    ## Bad Request

    RewriteRule .* .anon.dir/Repo/data/native/fuse/
    ## Bad Request

    RewriteRule ^(.*)$ /.anon.dir/Repo/data/native/fuse/$1 [L]
    ## Internal Server Error

    RewriteRule ^(.*)$ - [E=TRGT:".anon.dir/Repo/data/native/fuse/index.php"]
    RewriteRule ^(.*)$ %{ENV:TRGT}
    ## Bad Request

    ## Alias / %{DOCUMENT_ROOT}/blah ... for vHost/apache conf only
    ## Internal Server Error - in htaccess

实际代码在一个<if>块中,这正是:

<If "%{QUERY_STRING} =~ /(^|&)ANONFUSETEST($|&)/">
    Options -MultiViews
    RewriteEngine on

    RewriteRule ^(.*)$ .anon.dir/Repo/data/native/fuse/$1 [L]
</If>

我使用的是 Apache 2.4,目标子目录中没有htaccess,只有一个index.php文件, <h1>It Works!</h1>里面有一个文件。这是在一家受人尊敬的托管公司的共享主机上,所以其他地方应该没有有趣的事情发生。

这是ServerFaultStackOverflow上的一些有用链接,还有 一个.. 虽然如上所述,它不起作用.. 或者我做错了什么,这很可能是这种情况。

它与.路径的开头有关吗?- 它可能被视为“隐藏”?..我没有想法:/

任何帮助都将受到赞赏和实物奖励,在此先感谢。

4

1 回答 1

0

工作解决方案相当简单,看一下,详细说明如下:

    RewriteEngine on

    RewriteCond %{REQUEST_URI} !/.anon.dir/Repo/data/native/fuse/
    RewriteRule ^(.*)$ /.anon.dir/Repo/data/native/fuse/ [L,QSA]

似乎有一些内部安全检查强制执行确保请求与目标不同的条件,此外:

  • 目标路径以斜杠开始和结束
  • 附加$1到目标将导致404,因此QSA使用
  • 如果你想定义一次路径,你就不走运了,或者看起来

在变量中分配路径并以这种方式使用它会导致问题,如下所示:

<If "%{QUERY_STRING} =~ /(^|&)ANONFUSETEST($|&)/">
    RewriteEngine on

    RewriteRule ^(.*)$ - [E=TRGT:/.anon.dir/Repo/data/native/fuse/]

    RewriteCond %{REQUEST_URI} !%{ENV:TRGT}
    RewriteRule ^(.*)$ %{ENV:TRGT} [L,QSA]

    ## result is `Bad Request`
</If>

如果您知道如何使其更加“动态”,例如:只使用一次路径,那么您的答案将是可取的。

于 2020-10-12T22:33:10.427 回答