Symfony2:找不到“GET /sitemap.xml”的路由

时间:2016-05-03 18:58:37

标签: php symfony sitemap fosrestbundle

当我请求sitemap.xml时,我正在No route found for "GET /sitemap.xml"。我需要从sitemap.xml文件夹中提供/web。所以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

enter image description here

1 个答案:

答案 0 :(得分:4)

不。这里的问题在于您的.htaccess或类似的重写机制。

Symfony附带的默认.htaccess包含以下规则:

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]

表示“如果存在实际文件,则只提供服务”。在您的情况下,由于某些原因不应用此规则,因此所有内容都会传递到app.php和Symfony路由,但Symfony没有/sitemap.xml路由,因此404错误。