Symfony2:找不到 "GET /sitemap.xml" 的路由
Symfony2: No route found for "GET /sitemap.xml"
当我请求 sitemap.xml
时,我得到 No route found for "GET /sitemap.xml"
。我需要从 /web
文件夹提供 sitemap.xml
。所以出于某些原因 Symfony 开始寻找路由。我认为 config.yml
搞砸了。我正在使用 FOSRestBundle,它工作正常但可能会干扰路由。
来自config.yml
的相关部分:
framework:
translator: { fallback: en }
secret: %secret%
router:
resource: "%kernel.root_dir%/config/routing.yml"
strict_requirements: ~
form: ~
csrf_protection:
enabled: false
validation: { enable_annotations: true }
templating:
engines: ['twig']
#assets_version: SomeVersionScheme
default_locale: "%locale%"
trusted_proxies: ~
session:
save_path: %kernel.root_dir%/var/sessions
fragments: ~
fos_rest:
cache_dir: %kernel.cache_dir%/fos_rest
routing_loader:
default_format: json
service:
templating: templating
serializer: jms_serializer.serializer
serializer:
serialize_null: false
param_fetcher_listener: force
body_listener: true
body_converter:
enabled: true
format_listener:
rules:
- { path: '^/api', fallback_format: json }
- { path: '^/', priorities: [ 'html', '*/*'], fallback_format: html, prefer_extension: true }
view:
default_engine: twig
formats:
json: true
view_response_listener: forcebundle
unauthorized_challenge: ""
access_denied_listener:
json: true
exception:
codes:
'Symfony\Component\Routing\Exception\ResourceNotFoundException': 404
messages:
'Symfony\Component\Routing\Exception\ResourceNotFoundException': true
'Symfony\Component\HttpKernel\Exception\HttpException': true
没有。这里的问题出在您的 .htaccess
或类似的重写机制中。
Symfony 附带的默认 .htaccess
包含以下规则:
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
这意味着,"if a an actual file exists, just serve it"。在您的情况下,由于某些原因未应用此规则,因此所有内容都传递给 app.php
和 Symfony 路由,但 Symfony 没有 /sitemap.xml
路由,因此出现 404 错误。
当我请求 sitemap.xml
时,我得到 No route found for "GET /sitemap.xml"
。我需要从 /web
文件夹提供 sitemap.xml
。所以出于某些原因 Symfony 开始寻找路由。我认为 config.yml
搞砸了。我正在使用 FOSRestBundle,它工作正常但可能会干扰路由。
来自config.yml
的相关部分:
framework:
translator: { fallback: en }
secret: %secret%
router:
resource: "%kernel.root_dir%/config/routing.yml"
strict_requirements: ~
form: ~
csrf_protection:
enabled: false
validation: { enable_annotations: true }
templating:
engines: ['twig']
#assets_version: SomeVersionScheme
default_locale: "%locale%"
trusted_proxies: ~
session:
save_path: %kernel.root_dir%/var/sessions
fragments: ~
fos_rest:
cache_dir: %kernel.cache_dir%/fos_rest
routing_loader:
default_format: json
service:
templating: templating
serializer: jms_serializer.serializer
serializer:
serialize_null: false
param_fetcher_listener: force
body_listener: true
body_converter:
enabled: true
format_listener:
rules:
- { path: '^/api', fallback_format: json }
- { path: '^/', priorities: [ 'html', '*/*'], fallback_format: html, prefer_extension: true }
view:
default_engine: twig
formats:
json: true
view_response_listener: forcebundle
unauthorized_challenge: ""
access_denied_listener:
json: true
exception:
codes:
'Symfony\Component\Routing\Exception\ResourceNotFoundException': 404
messages:
'Symfony\Component\Routing\Exception\ResourceNotFoundException': true
'Symfony\Component\HttpKernel\Exception\HttpException': true
没有。这里的问题出在您的 .htaccess
或类似的重写机制中。
Symfony 附带的默认 .htaccess
包含以下规则:
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
这意味着,"if a an actual file exists, just serve it"。在您的情况下,由于某些原因未应用此规则,因此所有内容都传递给 app.php
和 Symfony 路由,但 Symfony 没有 /sitemap.xml
路由,因此出现 404 错误。