【问题标题】:Is it possible within Apache or a CGI script to tell if the request was redirected from domain xyz.com (301 redirect)?是否可以在 Apache 或 CGI 脚本中判断请求是否从域 xyz.com 重定向(301 重定向)?
【发布时间】: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


    【解决方案1】:

    如果您想静态设置域(以下示例使用 2 个域的集合),那么您可以尝试将以下内容添加到 .htaccess:

    RewriteCond %{HTTP_HOST} ^www\.(domain1|domain2)(\.com)$ [NC]
    RewriteRule ^(.*)$ /www.%1%2/$1 [L]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      • 2020-05-31
      • 1970-01-01
      • 2011-04-18
      • 2017-06-27
      相关资源
      最近更新 更多