【问题标题】:Apache VirtualHosts to test multiple redirectionsApache VirtualHosts 测试多个重定向
【发布时间】:2018-05-25 00:10:49
【问题描述】:

我正在尝试创建一个 VirtualHost 配置来测试客户端如何处理对同一服务器子路径的不同重定向。并且还要保持足够的灵活性,以便在将来包含更多的状态代码(例如 307、308...)。

此外,一个理想的功能是重用此配置,而不管它应用的主机名是什么(即重定向都到相同的主机名但在不同的端口/子路径中)。所以 Apache Redirects 指令可能不会成功。

我的第一个想法是创建单独的 2 个独立的 VirtualHosts,根据我想要测试的结果 HTTP 代码在 2 个不同的接口中侦听并为其包含 RewriteRules:

Listen 301
Listen 302

<VirtualHost *:301>
  RewriteEngine On
  RewriteRule ^(.*)$ $1 [R=301,L]
</VirtualHost>

<VirtualHost *:302>
  RewriteEngine On
  RewriteRule ^(.*)$ $1 [R=302,L]
</VirtualHost>

<VirtualHost *:80>
  [...]
</VirtualHost>

问题是端口号。 (即 301、302)也最终成为重定向 URL 的一部分,因此不会发生有效的重定向。我什至尝试将端口留在正则表达式组之外:^(.*):302$ 没有运气。

【问题讨论】:

  • 有点不清楚您要达到的目标。您能否举例说明在浏览器地址栏中输入的确切网址以及所需的目标网址。
  • @DusanBajic 是的;抱歉,如果我一开始不清楚。基本上,我希望 http://&lt;server&gt;:301/whatever 使用 301 代码重定向到 http://&lt;server&gt;/whatever 并使用永久重定向将 http://&lt;server&gt;:302/whatever 重定向到 http://&lt;server&gt;/whatever(保留路径并删除端口号。)

标签: apache redirect mod-rewrite virtualhost


【解决方案1】:

这样的事情应该可以工作:

<VirtualHost *:81>
RewriteEngine On
RewriteCond %{HTTP_HOST} ([^:]*):([0-9]*)$
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L,QSA]
</VirtualHost>

【讨论】:

    猜你喜欢
    • 2014-01-26
    • 2014-01-28
    • 2018-07-28
    • 1970-01-01
    • 1970-01-01
    • 2019-05-01
    • 2015-01-08
    • 2011-02-18
    • 2015-02-03
    相关资源
    最近更新 更多