【发布时间】:2014-07-12 19:04:20
【问题描述】:
我有一个 CGI 脚本,有时人们会从另一个域的 URL 的 301 重定向重定向到达那里。
我已经使用http://default.jonathanscorner.com/project/redirector 进行了试运行以重定向:
RewriteRule ^/project/redirector$ http://jonathanscorner.com/project/printenv.cgi [R=301,L]
http://jonathanscorner.com/project/printenv.cgi 正是它的名字所暗示的:
#!/bin/bash
echo 'Content-type: text/plain'
echo ''
printenv
CGI 脚本打印的环境变量似乎没有引用原始域 default.jonathanscorner.com:
SERVER_SIGNATURE=<address>Apache/2.2.16 (Debian) Server at jonathanscorner.com Port 80</address>
HTTP_USER_AGENT=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
SERVER_PORT=80
HTTP_HOST=jonathanscorner.com
DOCUMENT_ROOT=/home/cjsh/mirror
SCRIPT_FILENAME=/home/cjsh/mirror/project/printenv.cgi
REQUEST_URI=/project/printenv.cgi
SCRIPT_NAME=/project/printenv.cgi
SCRIPT_URI=http://jonathanscorner.com/project/printenv.cgi
HTTP_CONNECTION=keep-alive
REMOTE_PORT=54506
PATH=/usr/local/bin:/usr/bin:/bin
SCRIPT_URL=/project/printenv.cgi
PWD=/home/cjsh/mirror/project
SERVER_ADMIN=CJSHayward@POBox.com
HTTP_ACCEPT_LANGUAGE=en-US,en;q=0.8,fr;q=0.6
HTTP_ACCEPT=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
REMOTE_ADDR=98.253.179.182
SHLVL=1
SERVER_NAME=jonathanscorner.com
SERVER_SOFTWARE=Apache/2.2.16 (Debian)
QUERY_STRING=
SERVER_ADDR=69.163.221.78
GATEWAY_INTERFACE=CGI/1.1
SERVER_PROTOCOL=HTTP/1.1
HTTP_ACCEPT_ENCODING=gzip,deflate,sdch
REQUEST_METHOD=GET
HTTP_COOKIE=__atuvc=10%7C25%2C10%7C26%2C5%7C27%2C33%7C28
_=/usr/bin/printenv
看起来我想要的信息无法通过这种方式获得。
是否有其他方法可以检测是否从特定域重定向到新域?如果站点 xyz.com 链接到 http://default.jonathanscorner.com/project/redirector 并且重定向到 http://jonathanscorner.com/project/printenv.cgi,从 Apache 的角度来看是引用域 http://default.jonathanscorner.com/project/redirector 还是 xyz.com URL?
可以通过 Apache 配置完成吗?
谢谢,
【问题讨论】:
标签: apache mod-rewrite redirect cgi referrer