d.l*_*a38 2 php mod-rewrite http apache-2.4
我的 httpd.conf 文件中有一个 Apache 301 重定向,它将所有流量重定向到单个域以实现标准化。我最近注意到此重定向不会在标头中保留引荐来源网址。 RFC2616似乎表明在重定向中保留引荐来源网址是可选的,并且实际上建议在 HTTP 和 HTTPS 之间交叉时不要这样做。
不过,我发现了其他问题,其中简单的 Apache 301 重定向保留了引用者,并且默认情况下通常是这种情况。还有哪些其他因素可能会影响这种行为,我可以利用这些因素来保留推荐人?唯一的因素是否基于 Apache 服务器版本和/或客户端的浏览器设置(IE。超出我的控制范围)?
我的重定向:
ServerAlias www.example.com sub1.example.com
## Redirect all sub-domains to www
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
关于上述重写规则,我正在访问http://sub1.example.com. 为了简单起见,我目前只是使用 HTTP,直到我能弄清楚这一点。
我确定引荐来源网址未被保留的方法是通过打开开发人员工具的浏览器手动访问重定向的站点。我还确定引荐来源网址未包含在$_SERVER接收页面上的 PHP 全局中。我可以确认仅发生 1 次重定向。服务器端语言是PHP。
以下是初始页面 (sub1.example.com) 的请求标头:
GET / HTTP/1.1
Host: sub1.example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8
Run Code Online (Sandbox Code Playgroud)
以下是初始页面 (sub1.example.com) 的响应标头:
HTTP/1.1 301 Moved Permanently
Date: Wed, 04 Oct 2017 18:14:34 GMT
Server: Apache
Upgrade-Insecure-Requests: 0
Location: http://www.example.com/
Cache-Control: max-age=1
Expires: Wed, 04 Oct 2017 18:14:35 GMT
Content-Length: 243
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
Run Code Online (Sandbox Code Playgroud)
以下是接收页面 (www.example.com) 的请求标头:
GET / HTTP/1.1
Host: www.example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8
Cookie: <redacted>
Run Code Online (Sandbox Code Playgroud)
接收页面(www.example.com)的响应标头:
HTTP/1.1 200 OK
Date: Wed, 04 Oct 2017 18:14:34 GMT
Server: Apache
Upgrade-Insecure-Requests: 0
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Vary: Accept-Encoding
Content-Encoding: gzip
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
Run Code Online (Sandbox Code Playgroud)
重定向(301 或其他方式)会将响应发送回客户端(用户的浏览器),该响应仅表示“再次发送您的请求,但这次使用 . foo.com”。如果客户端选择再次发送,那么它会再次发送,并且如何制定请求完全取决于客户端。由于服务器端没有任何操作,因此您无法影响引用者的包含。
| 归档时间: |
|
| 查看次数: |
4421 次 |
| 最近记录: |