微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

RewriteRule-或document_root别名到子目录不重定向会导致错误请求或内部服务器错误

如何解决RewriteRule-或document_root别名到子目录不重定向会导致错误请求或内部服务器错误

在对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上有一些有用的链接one more ..尽管如上所述,但是它不起作用..或我做错了,很可能是这种情况。

这与路径开始处的.有关系吗? -它可能被视为“隐藏”? ..我没主意了:/

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

解决方法

工作解决方案 非常简单,请看一下,详细说明如下:

    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>

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。