【问题标题】:silex root folder files unable to access from url无法从 url 访问的 silex 根文件夹文件
【发布时间】:2018-12-04 23:36:12
【问题描述】:

我有一个使用 Silex 的网站。

我在根文件夹中上传了一些文件,例如 robots.txt 和一些推送通知 sdk

当我尝试使用 url 访问该文件时出现错误: domain.com/robots.txt 尝试从 chrome 浏览器访问时出错

找不到GET /robot.txt的路线

致命错误:未捕获的异常 'Symfony\Component\Routing\Exception\RouteNotFoundException' 与 message '无法为命名路由“”生成一个 URL 作为这样的路由 不存在。'在 /home/path/domain.com/vendor/symfony/routing/Symfony/Component/Routing/Generator/UrlGenerator.php:134 堆栈跟踪:#0 /home/path/domain.com/vendor/symfony/twig-bridge/Symfony/Bridge/Twig/Extension/RoutingExtension.php(45): Symfony\Component\Routing\Generator\UrlGenerator->generate(NULL, NULL, 错误)#1 /home/path/domain.com/data/twig/fe/bb/cd3e9843c1ef02ee591d59cfb1afd51eb5cd52af42e38573c035f7ef4128.php(146): Symfony\Bridge\Twig\Extension\RoutingExtension->getPath(NULL, NULL) #2 /home/path/domain.com/vendor/twig/twig/lib/Twig/Template.php(276): __TwigTemplate_febbcd3e9843c1ef02ee591d59cfb1afd51eb5cd52af42e38573c035f7ef4128-doDisplay(数组, 阵列)#3 /home/path/domain.com/vendor/twig/twig/lib/Twig/Template.php(250): Twig_Template->displayWithErrorHandling(Array, Array) #4 /home/path/域在 /home/path/domain.com/vendor/twig/twig/lib/Twig/Template.php 上线 291

【问题讨论】:

  • Silex 使用控制器将 url 与视图相关联。如果您要求提供 url /robots.txt 但您没有为 robots.txt 创建控制器,则无法访问它。如果您真的想使用 URL 访问它,只需创建一个像 $app->get('/robot') ... 这样的控制器,视图将只是 robots.txt

标签: php routes silex


【解决方案1】:

当您说根文件夹时,您是指 public_html 文件夹,还是包含“模板”和“src”等文件夹的文件夹?

当 Silex 尝试处理模板文档时,实际上会抛出“没有为 'GET /robot.txt' 找到路由”之后的大型 php 错误。我猜你的 silex 安装中的错误模板设置不正确。

如果您的 robots.txt 文件位于可公开访问的文件中,则不需要 Silex 控制器来提供服务,但您需要将网络服务器配置为在尝试将请求传递给 index.php 之前提供真实文件.

这里有示例配置https://silex.symfony.com/index.php/doc/2.0/web_servers.html

对于 apache,相关位是

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

对于 nginx,相关位是

try_files $uri /index.php$is_args$args;

这些是配置的部分,上面写着“检查该 url 是否确实存在文件,如果没有则使用 index.php”

【讨论】:

  • 是的,它的 Public_html 文件夹。早些时候它是工作文件。但不是它的错误。甚至无法访问 APIs 文件夹。但整个网站运行良好(我认为)。我在 .htaccess 文件中添加了这两行仍然给出相同的错误。 [代码]RewriteEngine On RewriteCond %{HTTP_HOST} !^(www)\. RewriteRule ^(.*)$ example.com/$1 [R=301,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [L,QSA][code ]
  • 甚至我运行良好的 api 路径也停止了工作。 Example.com/api/v1 给出了类似的错误。我真的需要帮助:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-30
  • 2015-07-04
  • 2016-08-04
  • 1970-01-01
  • 2013-10-07
相关资源
最近更新 更多