Apache VirtualHost 重定向 302(循环链接)

Apache VirtualHost 重定向 302(循环链接)

我寻求一些智慧,所以请帮忙...我有一个虚拟机充当路由器/Web服务器/dnsmasq服务器,IP:192.168.100.1。我还有其他机器作为客户端。

服务器具有 IPTables 规则,可将来自端口 80 的任何流量重定向到端口 8081。

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8081

我还在服务器上创建了基于名称的虚拟主机,并使用以下配置侦听端口 8081。

<VirtualHost *:8081>
RewriteEngine On
RewriteRulle .* http://cpt.haustor.org [R,L]
ServerName haustor.org
ServerAlias cpt.haustor.org
DocumentRoot /var/opt/mypage
<Directory /var/opt/mypage>
    DirectoryIndex index.html
    Require all granted
    Options Indexes FollowSymLinks Includes
</Director>

域 haustor.org 和子域 cpt.haustor.org 本地托管在服务器计算机上,并存在于 /etc/hosts 文件中:

192.168.100.1 cpt.haustor.org haustor.org

客户端能够解析 Web 服务器的 IP (192.168.100.1):在客户端上发出 Dig:

root@captivo:~# dig cpt.haustor.org

; <<>> DiG 9.9.5-9+deb8u2-Debian <<>> cpt.haustor.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41972
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096 
;; QUESTION SECTION:
;cpt.haustor.org.               IN      A

;; ANSWER SECTION:
cpt.haustor.org.        0       IN      A       192.168.100.1

;; Query time: 1 msec
;; SERVER: 192.168.100.1#53(192.168.100.1)
;; WHEN: Sun Aug 16 22:28:43 CEST 2015
;; MSG SIZE  rcvd: 60

从这个角度来看,一切似乎都很好,但是当我尝试从 Konqueror 访问任何 URL 时,会出现错误页面,其中指出存在循环链接。老实说,我不知道如何解决这个问题。目前我使用的是 Debian 8、Apache 2.4.10 和 dnsmasq 2.72。

请帮我解决这个问题。

PS 相同的配置在 CentOS 6 上运行没有问题。

BR,内文

更新:

查看日志,我看到该页面实际上被同时调用了多次:

root@captivo:~# cat /var/log/apache2/captivo-custom.log 
192.168.100.115 - - [16/Aug/2015:22:49:19 +0200] "GET / HTTP/1.1" 302 531
192.168.100.115 - - [16/Aug/2015:22:49:19 +0200] "GET / HTTP/1.1" 302 534
192.168.100.115 - - [16/Aug/2015:22:49:19 +0200] "GET / HTTP/1.1" 302 533
192.168.100.115 - - [16/Aug/2015:22:49:19 +0200] "GET / HTTP/1.1" 302 533
192.168.100.115 - - [16/Aug/2015:22:49:19 +0200] "GET / HTTP/1.1" 302 533
192.168.100.115 - - [16/Aug/2015:22:49:19 +0200] "GET / HTTP/1.1" 302 533
192.168.100.115 - - [16/Aug/2015:22:49:19 +0200] "GET / HTTP/1.1" 302 533
root@captivo:~# 

答案1

显然RewriteRule匹配任何内容都会导致循环。禁用它。

如果你想简单地重定向http://haustor.org/http://cpt.haustor.org/<VirtualHost>,为每个虚拟主机声明。

<VirtualHost *:8081>
ServerName haustor.org
Redirect / http://cpt.haustor.org/
</VirtualHost>

<VirtualHost *:8081>
ServerName cpt.haustor.org
DocumentRoot /var/opt/mypage
<Directory /var/opt/mypage>
    DirectoryIndex index.html
    Require all granted
    Options Indexes FollowSymLinks Includes
</Directory>
</VirtualHost>

相关内容