我正在尝试创建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$
没有运气。
答案 0 :(得分:0)
这样的事情应该有效:
<VirtualHost *:81>
RewriteEngine On
RewriteCond %{HTTP_HOST} ([^:]*):([0-9]*)$
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L,QSA]
</VirtualHost>