利用rewrite规则解决000webhost免费主机Alexa验证问题

使用000webhost的免费主机,除了有时候网页载入速度很慢以外,其它方面感觉都还可以。然而今天向Alexa提交网站,在验证网站所有权时遇到了一点问题。

跟Google网站管理员类似,Alexa验证所有权时可选择上传文件或是在首页代码中增加元标记。与Google不同的是,Alexa提供的文件扩展名为.txt而不是.html,问题随之而来。

当我上传指定txt文件至指定目录(一般为网站根目录)后,Alexa提示验证失败,无法找到该文件。直接在浏览器栏输入地址,IE同样显示404错误,并且该404错误页面并非我之前通过.htaccess文件自定义的错误页面。

一开始首先想到的是文件名大小写问题,但不管如何修改主文件名,依然无法访问,提示404错误。再考虑Linux主机文件权限问题,也没有异常。检查.htaccess文件中的防盗链设置,结果正常,并且robots.txt中也没有抓取限制。测试了一下目录中的其它txt文件,比如robots.txt,均可以正常读取。

无奈,在搜索引擎进行相关检索,未找到相关信息,在百思不得其解之下,又将文件扩展名修改为.html,结果竟然可以访问到了!不知道是不是000webhost作了一些限制,限制网站根目录下txt文件的访问?

既然扩展名为.txt时你死活要给我来个404错误,那么我改还不行么?000webhost免费主机支持rewrite规刚,那么我将该文件扩展名改为.html,并利用rewrite模块重写文件名不就可以了?

通过搜索引擎查找了一下rewrite规则的写法,经过反复测试之后,总算得到了可用规则,并实践成功。具体如下:

假设需要上传的文件名为ABCDefghi7890.txt,因上述原因,我们需要将其修改为ABCDefghi7890.html。然后,将该文件上传至指定网站目录(以下均以根目录为例)。

修改.htaccess文件(若无可自行建立,前提是空间支持,当然本文讨论的是000webhost的免费空间,我这里废话了),在该文件中加入以下规则:

RewriteRule ^ABCDefghi7890.txt$ ABCDefghi7890.html

若原来的.htaccess文件中没有其他内容,且该文件所在目录为网站根目录,则完整的.htaccess文件内容如下:

RewriteEngine on
RewriteBase /
RewriteRule ^ABCDefghi7890.txt$ ABCDefghi7890.html

通过此规则,当访问ABCDefghi7890.txt文件时,将自动重定向至ABCDefghi7890.html,比如网站域名为www.abc.com,当访问www.abc.com/ABCDefghi7890.txt时,实际上访问到的是www.abc.com/ABCDefghi7890.html,并且浏览器地址栏不会发生变化。

7 thoughts on “利用rewrite规则解决000webhost免费主机Alexa验证问题

  1. 叶若生

    博主你好,我遇到了和你一样的问题,GG无果,暂时只有按照你的这个方法曲线验证了,期待和你一起学习

    回复
    1. William 文章作者

      不大明白你的意思?我这里的规则是针对开启了rewrite支持,运行Apache的Linux主机的,如果是Win主机的话不大一样。

      回复
  2. 文文

    假设需要上传的文件名为ABCDefghi7890.txt,因上述原因,我们需要将其修改为ABCDefghi7890.html。然后,将该文件上传至指定网站目录(以下均以根目录为例)。

    我是按照这个步骤操作的

    回复
    1. William 文章作者

      如果站点不是在根目录,而是在子目录下,比如bbs子目录,可以试试把

      RewriteBase /

      改为

      RewriteBase /bbs

      回复

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注