【问题标题】:What to do about robots.txt for my CakePHP app?如何处理我的 CakePHP 应用程序的 robots.txt?
【发布时间】:2014-02-28 10:01:10
【问题描述】:

我在我的实时 CakePHP 网络应用程序中获得了以下信息:

2014-02-18 04:06:00 Error: [MissingControllerException] Controller class Robots.txtController could not be found.
Exception Attributes: array (
  'class' => 'Robots.txtController',
  'plugin' => NULL,
)
Request URL: /robots.txt

我该怎么办?

我使用的是 CakePHP 2.4.2

更新:

这是我的 robots.txt。还有什么我应该补充的吗?我把它放在webroot

User-agent: *
Disallow: /admin/

【问题讨论】:

  • 我猜你的虚拟主机的根不是指向 app/webroot 而是 app/ 。
  • 实际上我的 webroot 中甚至没有 robots.txt。我刚加了一个。查看我更新的问题

标签: cakephp cakephp-2.0 robots.txt


【解决方案1】:

将 robots.txt 复制到 /app/webroot/ 目录中。

【讨论】:

    【解决方案2】:

    您收到错误消息的原因是 Bot 或其他软件正在请求该文件,而 CakePHP 找不到它,因为它不存在。现在您已经创建了 robots.txt,您应该不会收到错误消息。您可以通过以下方式自行检查:

    http://www.example.com/robots.txt
    

    我可能会删除 /admin/,不想宣传你的后端在哪里!

    robots.txt 文件中类似以下的简单文本就足够了,如果您没有站点地图,请删除对站点地图的引用:

    User-agent: *
    Disallow:
    
    Sitemap: http://www.example.com/sitemap.xml
    

    希望对您有所帮助。

    【讨论】:

      【解决方案3】:

      您可能需要编辑 .htaccess 文件(或 /etc/lighttpd/lighttpd.conf 或类似文件,具体取决于您使用的网络服务器)以忽略 /robots.txt 的 url 重写。您必须已经设置好您的网络服务器以将请求传递给 CakePHP,但遗憾的是它会将 robots.txt 的请求传递给 CakePHP。您需要将您的网络服务器配置为不重写 /robots.txt 请求的 url,而是读取文件的内容。

      编辑:请记住,我对 nginx 一无所知,但可以试试这样的东西;

      server {
          listen 80;
          client_max_body_size 5M;
          server_name example.com;
          root /var/virtual/example.com/webroot;
          include common.conf;
          include php.conf;
      
          if (!-e $request_filename) {
              rewrite ^/(.+)$ /index.php?url=$1 last;
              break;
          }
      }
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-05
      • 2015-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      相关资源
      最近更新 更多