2015-09-05 80 views
0

我正在研究一个Apache模块,它可以帮助我消除重复的内容,但是我有一个检索真正值的问题。模块接收/空(无路径)请求

这是我可以提供的基本最重要的功能,使模块打印一个值并终止,而不管我访问的URL如何。

static int handler(request_rec *r){ 
    ap_rprintf(r,"%s\n",r->the_request); 
    return DONE; 
} 

http://docstore.mik.ua/orelly/apache_mod/128.htm,它指出

的char * THE_REQUEST 这包含请求的第一线,进行日志记录。

我然后在http://127.0.0.1:81

当我执行命令行上运行的本地服务器上的一些测试:

curl http://127.0.0.1:81/ 

我收到以下:

GET/HTTP/1.1 

当我在命令行上执行:

curl http://127.0.0.1:81 

我收到以下:

GET/HTTP/1.1 

为什么THE_REQUEST总是返回GET/HTTP/1.1而不是GET/HTTP/1.1GET HTTP/1.1

我想创建一个从http://127.0.0.1:81http://127.0.0.1:81/的重定向,所以谷歌或其他搜索引擎不认为我有重复的内容。

当我改变了我的代码:

static int handler(request_rec *r){ 
ap_rprintf(r,"%s\n",r->unparsed_uri); 
return DONE; 
} 

我仍然有问题,因为我是从分别尝试http://127.0.0.1:81/http://127.0.0.1:81期待/和一个空。

我怀疑这是HTTP或apache中的一个错误,但我想知道是否可以解决这个问题。

我想访问http://127.0.0.1:81与位置指示返回301重定向状态http://127.0.0.1:81/

有什么建议?

回答

1

为什么the_request总是返回GET/HTTP/1.1而不是GET/ HTTP/1.1和GET HTTP/1.1?

HTTP在请求URL中需要一个路径。客户经常会让你忽略它(与计划一起),但在线上他们总是为你添加它。这只是一种方便,您可以在浏览器中键入“example.com”,并不意味着它没有任何路径或方案。