Apache VirtualHosts用于测试多个重定向

时间:2017-12-11 12:54:05

标签: apache redirect mod-rewrite virtualhost

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

此外,所需的功能是重用此配置,无论应用它的主机名(即重定向都是相同的主机名,但在不同的端口/子路径中)。所以Apache Redirects指令可能不会起作用。

我的第一个想法是创建单独的2个独立的VirtualHosts,在2个不同的界面中监听,具体取决于我想要测试的结果HTTP代码并包含RewriteRule

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的一部分,因此不会发生有效的重定向。我甚至尝试将端口留在regexp的组外:^(.*):302$没有运气。

1 个答案:

答案 0 :(得分:0)

这样的事情应该有效:

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