/ thanks和/ thanks /之间的区别(http状态301)

时间:2011-01-14 08:09:04

标签: php apache

我有一个网站,其中一个子文件夹是/ thanks。

因此(一)页面的完整URI将是

/thanks/index.php

现在我输入

/thanks/我获得200返回状态,然后选择(默认)页面index.php

但是,当我输入时 /thanks我获得301重定向到/thanks/

<address>Apache/2.2.8 (Linux/SUSE) Server at www.mydomain.net Port 80</address>

虽然行为正确,但我希望/thanks能直接投放/thanks/文件夹,而不是301。

这可能吗?

顺便说一句,看起来apache正在自动生成301',我想知道:当你拨打/thanks代替/thanks/

时,实际调用了哪个页面或来源

3 个答案:

答案 0 :(得分:6)

此行为是设计原因,因为url“/ thanks”实际应该引用该文件。只是为了您的方便,Web服务器检查是否存在此类文件,如果不存在,则检查此类目录是否存在,如果存在,则将请求重定向到正确的目标“/ thanks /".

实际上,最好的做法是尽可能强制/使用尾部斜杠,它是一种规范形式,它减少了Web服务器上的负载(解析一个HTTP请求而不是两个 - 原始和重定向),并改进了搜索引擎优化

至于如何解决这个问题,是否需要修复的问题仍然存在。如果你通过说URL重写来解决这个问题,你的用户将继续使用不正确/糟糕的SEO网址。如果您修复了站点上的所有链接以使用正确的表单并使用默认修复方案 - 重定向 - 那么重定向会将用户重定向到正确的URL,并且用户将默认使用正确的版本(至少,在这个会议中)。

答案 1 :(得分:2)

您遇到的问题是,您最终可能会为同一页面提供多个地址......

/thanks
/thanks/
/thanks/index.php

当人们链接回您的网站并且搜索引擎抓取您的网页时,属于

的“荣誉”
/thanks/

将在三个地址之间进行划分,并且您的网页可能会在搜索结果中落后于其他情况。

通过强制执行尾部斜杠,可以消除一种问题。

因此,我全心全意地建议坚持“强制执行”斜线的惯例。

答案 2 :(得分:1)

http://httpd.apache.org/docs/current/mod/mod_dir.html#directoryslash

自Apache 2以来,如果您不喜欢尾部斜杠重定向,可以将其关闭。但是,请仔细阅读所有内容,确保您知道自己在做什么(这不是建议的事情)