Jon*_*ebo 14 ubuntu http directory redirect apache-2.2
在请求这样的 url 时,我并没有真正注意到这个 Redirect(301),最后没有斜杠(“/”): http://server/directory
服务器将响应 301 Redirect Permanent 标头,其中 Location 标头定位到http://server/directory/。
请参阅此实时示例:
用户请求:
GET /social HTTP/1.1
( http://192.168.1.111/social )
Run Code Online (Sandbox Code Playgroud)
Apache 服务器响应:
HTTP/1.1 301 Moved Permanently
Location: http://192.168.1.111/social/
Run Code Online (Sandbox Code Playgroud)
用户请求:
GET /social/ HTTP/1.1
( http://192.168.1.111/social/ )
Run Code Online (Sandbox Code Playgroud)
Apache 服务器响应:
HTTP/1.1 200 OK
Run Code Online (Sandbox Code Playgroud)
Apache访问日志:
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"
Run Code Online (Sandbox Code Playgroud)
/social/ 目录包含一个index.html文件。
Apache 软件:Apache/2.2.22 (Ubuntu)
目录选项:Options Indexes FollowSymLinks MultiViews
所以,我的问题是:为什么 apache 这样做?以及如何防止重定向并index.html直接发送?客户端必须发送两个真正不必要的请求。并且可能某些客户端不允许重定向,并且如果没有结尾斜杠(“/”)将无法访问该站点。
我不想禁用重定向。我不想服务器在没有任何重定向的情况下直接发送响应。即使在请求/social.
apache 是否旨在重定向这些请求?服务器可以直接发送数据而无需重定向,对吗?我应该使用mod_rewrite来防止这种情况吗?还是其他配置?或者我应该让它像这样并在所有 html 链接的末尾添加一个斜杠并接受一些重定向?
你们有什么感想?
kas*_*erd 10
在没有重定向的情况下发送数据会破坏相关链接。如果http://server/directory包含file,则其完整 URL 将为http://server/directory/file. 如果基本 URL 是,则指定 like 的链接<a href="file">将指向,但如果仅是基本 URL ,它将指向,而不是预期的结果。http://server/directory/filehttp://server/directory/http://server/directoryhttp://server/file
Apache 可以根据 URL 而不是重定向以两种不同的方式生成目录列表。但是,如果index.html目录中有文件,那将不起作用。因此,Apache 正在使用这种方法,这在两种情况下都有效。
这不是一种新行为,十年前 Apache 的行为方式相同。无法处理重定向的客户端现在应该已经修复了。但是对于任何无法处理重定向的客户端,Apache 应该发送一个带有可以跟踪的链接的小 html 文件。
200*_*ess 10
mod_dir添加此重定向,您可以使用DirectorySlash Off指令禁用它。
但是请注意,禁用尾部斜杠重定向可能会导致某些页面中断。如果返回的页面包含相对链接,那么如果页面不带尾部斜杠,则这些 URL 的解析方式会有所不同。
| 归档时间: |
|
| 查看次数: |
16224 次 |
| 最近记录: |