我尝试配置Apache
服务器以添加HTTP Link header
指向Memento
TimeGates url
我的 htaccess:
RewriteEngine on
RewriteCond %{IS_SUBREQ} false
RewriteRule ^/(.*) - [E=ORIGURI:%{HTTP_HOST}/$1]
RewriteRule ^/(.*) - [E=ORIGQRY:]
RewriteCond %{QUERY_STRING} .+
RewriteRule ^/(.*) - [E=ORIGQRY:?%{QUERY_STRING}]
RewriteRule ^/(.*) - [E=ORIGPROTO:http]
RewriteCond %{HTTPS} on
RewriteRule ^/(.*) - [E=ORIGPROTO:https]
Header always set Link
"<http://purl.org/memento/timegate/%{ORIGPROTO}e://%{ORIGURI}e%{ORIGQRY}e>;rel=timegate"
.
.
.
不变:http ://www.mementoweb.org/tools/apache/
我正在XAMPP
服务器上测试代码,但服务器发送的响应是:
.
.
.
Link <http://purl.org/memento/timegate/(null)://(null)(null)>;rel=timegate
Server Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7
.
.
.
htaccess 有什么问题?
编辑 1
按照 Jon Lin 的建议删除前导斜杠:
RewriteEngine On
RewriteCond %{IS_SUBREQ} FALSE
RewriteRule ^(.*) - [E=ORIGURI:$1]
RewriteRule ^(.*) - [E=ORIGQRY:]
RewriteCond %{QUERY_STRING} .+
RewriteRule ^(.*) - [E=ORIGQRY:?%{QUERY_STRING}]
RewriteRule ^(.*) - [E=ORIGPROTO:http]
RewriteCond %{HTTPS} on
RewriteRule ^(.*) - [E=ORIGPROTO:https]
Header always set Link "<http://purl.org/memento/timegate/%{ORIGPROTO}e://%{ORIGURI}e%{ORIGQRY}e>;rel=timegate"
服务器发送的新响应:
Link <http://purl.org/memento/timegate/http://(null)>;rel=timegate
正如我们所看到的,protocole 已被解析,但 url 的其余部分没有被解析,还有其他建议吗?