这实际上不是美学问题,而是技术差异。考虑它的目录是完全正确的,几乎可以解释一切。让我们解决它:
您现在又回到了石器时代,或者只提供静态页面
你的网络服务器上有一个固定的目录结构,只有图像、html 等静态文件——没有服务器端脚本或任何东西。
浏览器请求/index.htm
,它存在并交付给客户端。稍后,您将有很多(比方说)经过审核的 DVD 电影以及/dvd/
目录中每个电影的 html 页面。现在有人请求/dvd/adams_apples.htm
并且它被交付,因为它在那里。
在某一天,有人只是请求/dvd/
-这是一个目录,服务器正试图弄清楚要交付什么。除了访问限制等还有两种可能性:向用户显示目录内容(我打赌你已经在某处看到过)或显示默认文件(在 Apache 中是DirectoryIndex: sets the file that Apache will serve if a directory is requested.
:)
到目前为止一切顺利,这是预期的情况。它已经显示了处理上的差异,所以让我们开始吧:
早上 5 点 34 分,您上传文件时出错
(顺便说一句,这是完全可以理解的。)因此,您做错了事,而不是将/dvd/the_big_lebowski.htm
文件上传为dvd
(没有扩展名)到/
.
有人为您的/dvd/
目录列表添加了书签(当然您不想创建并总是更新那个漂亮index.htm
的)并且正在访问您的网站。目录内容已交付 - 一切正常。
有人听说了您的列表并正在输入/dvd
。现在它被搞砸了。服务器会查找具有该名称的文件,而不是列出您的 DVD 目录,并提供您的 Big Lebowski 文件。
因此,您删除该文件并告诉该人重新加载页面。您的服务器正在查找该/dvd
文件,但它已经消失了。然后大多数服务器会注意到有一个具有该名称的目录,并告诉客户端它正在寻找的东西确实在其他地方。响应很可能是:
Status Code:301 Moved Permanently
和Location: http://[...]/dvd/
因此,完全忽略您对目录或文件的看法,服务器只能处理此类内容,并且 - 除非另有说明 - 为您决定“斜线与否”的含义。
最后在收到此响应后,客户端加载/dvd/
并且一切正常。
好吗?不。
“刚刚好”对你来说还不够好
您有一些动态页面,其中所有内容都被传递/index.php
并得到处理。到目前为止,一切都很好,但是整个事情开始变得更慢,你开始调查。
很快,您会注意到它/dvd/list
的作用完全相同:重定向到/dvd/list/
然后在内部翻译成index.php?controller=dvd&action=list
. 一个额外的要求 - 但更糟糕的是!customer/login
重定向到customer/login/
哪个又重定向到customer/login/
. 您最终会有大量不必要的 HTTP 重定向(= 额外请求),这会使用户体验变慢。
很可能您在这里也有一个默认目录索引:index.php?controller=dvd
没有action
简单的内部加载index.php?controller=dvd&action=list
。
概括:
如果它以它结尾,/
它永远不会是一个文件。没有服务器猜测。
斜线或不斜线是完全不同的含义。“斜线或不斜线”之间存在技术/资源差异,您应该意识到它并相应地使用它。仅仅因为服务器最有可能加载/dvd/index.htm
- 或加载正确的脚本内容 - 当你说/dvd
:它做到了,但不是因为你提出了正确的请求。本来是/dvd/
。
即使您确实是指斜线版本,省略斜线也会给您额外的 HTTP 请求惩罚。这总是很糟糕(想想移动延迟)并且比“漂亮的 URL”更重要 - 特别是因为爬虫并不像 SEO 相信或希望你相信的那样愚蠢;)