2016-05-03 10 views
1

Wenn ich sitemap.xml anfrage, bekomme ich No route found for "GET /sitemap.xml". Ich muss sitemap.xml aus dem Ordner /web dienen. Aus irgendeinem Grund beginnt Symfony nach einer Route zu suchen. Ich denke, ist durcheinander. Ich benutze FOSRestBundle, das funktioniert gut, könnte aber das Routing stören.Symfony2: Keine Route gefunden für "GET /sitemap.xml"

Relevante Teile aus dem 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

Warum denken Sie, FOSRestBundle kann das Problem sein? Ist es nicht normal, dass jeder URL-Anruf durch den Router geht? Oder Sie bearbeiten Ihre Sitemap, indem Sie eine Route erstellen [link] (http://symfony.com/doc/current/cmf/bundles/seo/sitemap.html) oder Sie haben einen speziellen Zugriff in Ihrer nginx/apache-Konfiguration vorgenommen, um dies zu erfüllen url. – olibiaz

+1

Wie andere erwähnt haben, gibt es nichts, was mit Symfony zu tun hat, Ihre Webserver-Konfiguration muss folgende Regel enthalten: wenn Datei existiert> Datei zurücksenden. – malcolm

Antwort

3

Nope. Das Problem hier ist in Ihrem .htaccess oder ähnlichen Neuschreibmechanismus.

Der Standard .htaccess, die Schiffe mit Symfony diese Regeln inncludes:

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

was bedeutet, „wenn eine eine tatsächliche Datei vorhanden ist, ist es nur dienen“. In Ihrem Fall wird diese Regel aus einigen Gründen nicht angewendet, also wird alles an app.php und Symfony Routing weitergeleitet, aber Symfony hat keine /sitemap.xml Route, also den 404 Fehler.

+0

Tatsächlich war es ein Problem mit '.htaccess'. In meinem Fall wurde die Symfony App aus dem Unterordner '/ api' bedient, und die RewriteRule für Sitemaps im Stammverzeichnis' .htaccess' war nicht korrekt. Die richtige lautet: 'RewriteRule^Sitemap (. *) .xml $ api/web/sitemap $ 1.xml [L]' – Websirnik

Verwandte Themen