我在请求这样的网址时没有真正注意到此Redirect(301),而该网址结尾没有slash(“ /”): http://server/directory
服务器将使用301重定向永久标头和Location标头定位到进行响应http://server/directory/
。
请参见以下示例:
用户要求:
GET /social HTTP/1.1
( http://192.168.1.111/social )
Apache服务器响应:
HTTP/1.1 301 Moved Permanently
Location: http://192.168.1.111/social/
用户要求:
GET /social/ HTTP/1.1
( http://192.168.1.111/social/ )
Apache服务器响应:
HTTP/1.1 200 OK
Apache access.log:
192.168.1.130 - - [05/Apr/2014:22:06:47 +0200] "GET /social HTTP/1.1" 301 558 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0"
-
192.168.1.130 - - [05/Apr/2014:22:06:47 +0200] "GET /social/ HTTP/1.1" 200 942 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0"
/ social /目录包含一个index.html
文件。
Apache软件:Apache/2.2.22 (Ubuntu)
目录选项:Options Indexes FollowSymLinks MultiViews
因此,我的问题是:为什么Apache会这样做?以及如何防止重定向并index.html
直接发送出去?客户必须发送两个请求,这实际上是不必要的。也许某些客户端不允许重定向,并且如果没有结尾斜杠(“ /”),将无法访问该站点。
我不想禁用重定向。我不希望服务器直接发送响应而没有任何重定向。即使要求/social
。
apache旨在重定向那些请求吗?服务器可以直接发送数据而无需重定向,对吗?我应该使用mod_rewrite
来防止这种情况吗?还是其他配置?还是应该让它像这样,并在所有html链接的末尾添加一个斜杠并进行一些重定向?
你们有什么感想?
index.html
无重定向
/social
。(而且,通常,通常不希望在多个URL上提供相同的内容。)
/social
在您的示例中,唯一合理的替代方法是使用404进行响应。