如何在无循环的情况下重定向主页索引文件

2021-02-27 22:16:43发布

1条回答
天宇老师
1楼 · 2021-02-27 22:25:01.采纳回答

许多网站会使用一个类似http://www.yourdomain.com/index.html的形式链接至其主页,但问题是大部分进入网站主页的导入链接使用http://www.yourdomain.com,因此这会将链接权限分到该网站。发布者意识到这个问题之后,可能想修复其导入链接,然后301重定向http://www.yourdomain.com/index.html至http://www.yourdomain.com/,但如果操作不当,可能会出现循环重定向。


当用户通过输入http://www.yourdomain.com进入你的网站之后,网络的DNS系统会帮助浏览器定位网站网络服务器的位置,网络服务器通过从硬盘驱动器加载文件来决定向浏览器展示什么内容。

如果没有指定文件(如上面的例子中,只给出了域名),网络服务器会加载默认的文件,通常是一个带有诸如index.html,index.htm,index.shtml,index.php或default.asp等名称的文件。

文件名可以是任何内容,但大部分网络服务器默认一种或另一种文件名。许多CMS会展示两种格式的主页:http://www.yourdomain.com和http://www.yourdomain.com/index.php,这时就会出现问题。

或许网站中的所有页面都只链接到http://www.yourdomain.com/index.php,但考虑到人类的本性,大部分从第三方进入网站主页的链接极有可能会指向http://www.yourdomain.com/,如果搜索引擎能看到主页的两个版本且认为它们是相互独立但重复的文件时,就会出现内容重复的问题。谷歌能机智巧妙地解决这个问题,但最好不要赌运气。


由于你已经学习了如何进行301重定向,因此你会总结出问题的解决方案是301重定向http://www.yourdomain.com/index.php至http://www.yourdomain.com/,听起来很不错,是吗?遗憾的是,该方法存在一个非常大的问题。


实际情况是服务器看到对http://www.yourdomain.com/index.php的请求,然后明白它应该301重定向该网址至http://www.yourdomain.com/,它确实会这样做。但当它加载http://www.yourdomain.com/时,会检索默认的文件名(index.php),并继续加载http://www.yourdomain.com/index.php,之后它明白了你希望重定向该网址至http://www.yourdomain.com/,那么它就会进入一个无限的循环。


默认文件重定向解决方案

下面的解决方案仅限于上述index.php案例,你需要在自己的网络服务器中插入恰当的默认文件名。

1.将index.php的内容复制到另外一个文件中,在本例中,我们将使用sitehome.php文件。

2.为文档根目录创建一个Apache DirectoryIndex指令,将其设置为sitehome.php,不要在服务器层面设置该指令,否则,它会给一些其他仍需使用index.php作为目录索引的文件夹造成困难。

3.将其放置在文档根目录中的.htaccess文件内:DirectoryIndexsitehome.php,或者,如果你未使用目录上下文文件,则可将其放在httpd.conf中:

4.清除原始index.php文件中的内容,嵌入下列代码行:


在这样的设置下,index.php便不是一个目录索引文件(也就是默认文件名),当用户输入标准网址时(http://www.yourdomain.com),它会迫使sitehome.php被读取。任何来自原始链接中对index.php的请求现在都能被301重定向,而同时也避免了无限循环。


如果你使用的是CMS,那么你还需要确保自己在执行这一过程时,所有的导入链接现在都链接至标准网址http://www.yourdomain.com,如果CMS出于某种原因而开始指向http://www.yourdomain.com/sitehome.php,那么便会再次出现循环的问题,迫使你重复上述整个过程。

TAG标签:

一周热门 更多>

相关问答