【问题标题】:httpd.conf proxypass rewritehttpd.conf proxypass 重写
【发布时间】:2014-09-11 18:31:51
【问题描述】:

我只在请求来自 VLC 播放器时才尝试使用代理,因此在请求标头中用户代理将包含 VLC。

<Directory "/var/www/html/mvs">
RewriteEngine On
RewriteCond expr "%{HTTP_USER_AGENT} -strmatch '*VLC*'"
RewriteRule ^mvs/(.*)$  http://www.example.com/directory/$1  [P]
ProxyPassReverse /mvs/ http://www.example.com/directory/
</Directory>

当我在位于 /var/www/html/mvs/ 的 VLC 网络插件中运行文件时,它会播放,所以我认为 RewriteRule 和 RewriteCond 是错误的。该文件不应播放,因为该文件在http://www.example.com/directory/ 文件夹中不存在。我不知道如何调试这个。对不起

【问题讨论】:

  • 这里有问题吗?
  • 代码不工作..
  • 我并不是想给您带来麻烦,但您应该编辑您的问题,使其包含您从代码中获得的错误或不正确的结果。

标签: apache proxypass


【解决方案1】:

我想通了。我在html目录下的.htaccess文件中写了如下几行:

Options +FollowSymLinks
RewriteEngine On
RewriteCond  %{HTTP_USER_AGENT}  ^VLC
RewriteRule  ^mvs(.*) http://188.25.221.87$1 [R,L]

如果用户代理包含 VLC,并尝试访问 /html/mvs/ 目录,他将被重定向到 http://188.25.221.87/ 并复制 /mvs/ 之后的路径或查询。如果用户代理不包含 VLC,则不会重定向用户。重要的 %{HTTP_USER_AGENT} ^ 区分大小写,因此它不能与 ^vlc 一起使用。

【讨论】:

    猜你喜欢
    • 2012-10-06
    • 2012-04-20
    • 2014-02-01
    • 2013-07-01
    • 2014-09-01
    • 2013-03-02
    • 2016-04-29
    • 2013-03-19
    • 2012-10-08
    相关资源
    最近更新 更多