Php /Thank和/Thank/(http状态301)之间的差异

Php /Thank和/Thank/(http状态301)之间的差异,php,apache,Php,Apache,我有一个网站,其中一个子文件夹是/谢谢 因此(一)页的完整URI为 /thanks/index.php 现在当我打字的时候 /Thank/我得到了一个200返回状态,它会选择(默认)页面index.php 然而,当我打字时 /谢谢我得到一个301重定向到/谢谢 <address>Apache/2.2.8 (Linux/SUSE) Server at www.mydomain.net Port 80</address> www.mydomain.net端口80上的Apa

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

因此(一)页的完整URI为

/thanks/index.php
现在当我打字的时候

/Thank/
我得到了一个200返回状态,它会选择(默认)页面
index.php

然而,当我打字时
/谢谢
我得到一个301重定向到
/谢谢

<address>Apache/2.2.8 (Linux/SUSE) Server at www.mydomain.net Port 80</address>
www.mydomain.net端口80上的Apache/2.2.8(Linux/SUSE)服务器 虽然行为是正确的,但我希望
/Thank
也能直接为
/Thank/
文件夹提供服务,而不需要301

可能吗


顺便说一句,看起来apache正在“自动”生成301,我想知道:当您调用
/Thank
而不是
/Thank/
时,实际调用的是什么页面或源代码?您面临的问题是,您可能最终会为同一页面提供多个地址

<address>Apache/2.2.8 (Linux/SUSE) Server at www.mydomain.net Port 80</address>
/thanks
/thanks/
/thanks/index.php
当人们链接回你的网站,搜索引擎抓取你的网页时,你所拥有的“荣誉”

/thanks/
将被分为三个地址,您的页面在搜索结果中的位置可能会比其他情况下低得多

通过强制使用尾部斜杠,可以消除出现问题的一种可能性


因此,我全心全意地建议遵守“强制”斜杠尾部的惯例。

这种行为是出于设计,因为url“/Thank”实际上应该引用该文件。仅为方便起见,web服务器会检查此类文件是否存在,如果不存在,则检查此类目录是否存在,如果存在,则会将请求重定向到正确的目标“/谢谢/”

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

至于如何修复,是否需要修复的问题仍然存在。如果你通过URL重写来解决这个问题,你的用户将继续使用不正确/不好的搜索引擎优化URL。如果您将站点上的所有链接修复为使用正确的格式,并采用默认的修复方案-重定向,那么重定向会将您的用户重定向到正确的URL,并且用户将在以后(至少在此会话中)默认使用正确的版本。


自从Apache2以来,如果您不喜欢尾部斜杠重定向,可以将其关闭。但是,请仔细阅读所有内容,确保您确实知道自己在做什么(这不是推荐的做法)

特别是Kaerber和Sohnee提到的SEO原因,以及记录的安全含义。