Ergebnis 1 bis 8 von 8

Thema: Suchmodul liefert keine Ergebnisse bei "ErrorDocument 404 /index.php" in der .htacces

  1. #1
    Contao-Nutzer
    Registriert seit
    17.03.2011.
    Ort
    Halberstadt
    Beiträge
    6

    Standard Suchmodul liefert keine Ergebnisse bei "ErrorDocument 404 /index.php" in der .htacces

    Liebe Community,
    habe eine Lösung meines Problems leider hier und im Netz nicht gefunden:

    Wenn ich in der .htaccess die Fehlerseite angebe: "ErrorDocument 404 /index.php" oder "ErrorDocument 404 /seite-nicht-gefunden-404.html"
    dann liefert das Suchmodul der Website fst-halberstadt.de keine Ergebnisse mehr.

    Sobald ich das ErrorDocument in der .htaccess deaktiviere, funktioniert das Suchmodul wieder. Jedoch führen externe falsche Links dann wieder ins "Leere", d.h. auf die Error-Seite des Providers 1&1.

    Zusätzlich benutze ich in der .htacces noch die Rewrite-Regel, um von www.fst-halberstadt.de auf fst-halberstadt.de "umzuleiten":
    RewriteCond %{HTTP_HOST} ^www\.fst-halberstadt\.de$ [NC]
    RewriteRule (.*) http://fst-halberstadt.de/$1 [R=301,L]

    Hat Jemand vielleicht einen Lösungsansatz für mich parat?
    Dankeschön... :-)
    LG Andreas
    Geändert von andreas.metius (13.03.2018 um 15:36 Uhr)

  2. #2
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.078
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Welche genaue Version hast du denn? Und wird der Suchindex korrekt aufgebaut (mit aktivem ErrorDocument in der .htaccess), wenn du ihn mit der Systemwartung neu aufbauen lässt? Werden also erstens alle Seiten dabei angezeigt und werden sie zweitens alls grün beim Aufbauen?

    Edit: Habe das gerade mal getestet und sieht doch eigentlich gut aus?!? Es kommen sowohl die eigene 404er Seite als auch Suchergebnisse.
    Geändert von tab (13.03.2018 um 11:14 Uhr)

  3. #3
    Contao-Nutzer
    Registriert seit
    17.03.2011.
    Ort
    Halberstadt
    Beiträge
    6

    HTML Suchmodul funktioniert nicht mit PHP-Adresse in URL

    Hallo tab,
    vielen Dank für die schnelle Antwort! :-)
    Es handelt sich übrigens um eine Multi-Site (fst-halberstadt.de, systemische-fachtagung.de, 2013.systemische-fachtagung.de - falls relevant) mit Contao 3.5.6.
    Der Suchindex wurde korrekt aufgebaut, mit aktivem "ErrorDocument 404 /index.php" in der .htaccess. Habe ich gerade noch mal laufen lassen (siehe Anhang), nachdem ich alle Daten in der Systemwartung bereinigt habe.

    Da das Suchmodul bei dir funktioniert hat, habe das Ganze nochmal durchgespielt und bin auf das Problem mit den alten PHP-Seiten gestoßen. Wenn mich Google auf eine alte, nicht mehr existierende PHP-Seite leitet wird die 404-Seite geladen, in dem URL steht aber die alte PHP-Adresse (z.B. http://fst-halberstadt.de/fortbildun...paedagogik.php) - dann funktioniert die Ausgabe des Suchmoduls nicht. Sobald ich in der Adresse ".php" --> ".html" ändere, funktioniert das Suchmodul. Bingo.

    Jetzt stellt sich mir die Frage, wie ich dieses Problem lösen kann?
    LG Andreas
    Angehängte Grafiken Angehängte Grafiken
    Geändert von andreas.metius (13.03.2018 um 15:38 Uhr)

  4. #4
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.078
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hmm, da hast du Recht. Das kann ich auf deiner Seite nachvollziehen. Leider habe ich selbst keine Website, bei der auf der 404er Seite eine Suche eingebunden ist. Ich mache da meistens eine Sitemap drauf. Ich könnte mir vorstellen, dass es daran liegt, dass die aus der Suche auf der 404er Seite resultierende URL immer noch den Suffix php hat. Diese URL wird aber in der .htaccess nicht auf index.php umgeschrieben, also gar nicht von Contao verarbeitet. Bzw lediglich insoweit, als die URL nicht gefunden wird und somit wieder die 404er Seite ausgegeben wird. Kann aber auch sein ich liege da völlig daneben, wie das genau im Detail abläuft, damit habe ich mich nie wirklich beschäftigt.

  5. #5
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.108
    Partner-ID
    10107

    Standard

    Poste deine komplette .htaccess.

  6. #6
    Contao-Nutzer
    Registriert seit
    17.03.2011.
    Ort
    Halberstadt
    Beiträge
    6

    Frage #RewriteRule [Ausgabe] <--> [Original] ?

    Vielen Dank für eure Hinweise! Habe mich dann auch hinsichtlich des "Umschreibens" der PHP-Seiten schlau gemacht und habe es hiermit versucht. Hat nicht geklappt:
    Code:
    #RewriteRule [Ausgabe] [Original]
    RewriteRule ^(.*).html$ $1.php
    Dann habe ich mal Ausgabe und Origanal getauscht und für spezielle Seiten getestet. Das funktioniert, das Suchmodul liefert Ergebnisse:
    Code:
    RewriteRule ^fortbildungen.php$ fortbildungen.html
    RewriteRule ^fortbildungen_traumpaedagogik.php$ fortbildungen_traumpaedagogik.html
    RewriteRule ^praxis_familientherapie.php$ praxis_familientherapie.html
    Die folgende Regel funktioniert wiederum nicht, obwohl die Seite korrekt bezeichnet/angegeben ist:
    Mein Fehler: Seite liegt in einem Unterverzeichnis, das ich nicht mit berücksichtigt habe, funktioniert also doch, wenn ich das Verzeichnis im Pfad berücksichtige:
    Code:
    RewriteRule ^fst/systemische_weiterbildung_referenten.php$ fst/systemische_weiterbildung_referenten.html
    Hier die komlette .htaccess:
    Code:
    #Fehlerseite für den Fehler 404 - Seite nicht gefunden
    #Bei Aktivierung funktioniert Contao-Suchformular nicht mehr!!!
    #ErrorDocument 404 /404.html
    ErrorDocument 404 /index.php
    
    ##
    # Contao Open Source CMS
    #s
    # Copyright (c) 2005-2015 Leo Feyer
    #
    # @license LGPL-3.0+
    ##
    
    ##
    # Prevent access to the Contao template files
    ##
    <FilesMatch "\.(tpl|html5|xhtml)$">
      <IfModule !mod_authz_core.c>
        Order deny,allow
        Deny from all
      </IfModule>
      <IfModule mod_authz_core.c>
        Require all denied
      </IfModule>
    </FilesMatch>
    
    ##
    # Allow access from all domains for webfonts
    # @see https://github.com/h5bp/html5-boilerplate
    ##
    <IfModule mod_headers.c>
      <FilesMatch "\.(ttf|ttc|otf|eot|woff2?|font\.css)$">
        Header set Access-Control-Allow-Origin "*"
      </FilesMatch>
    </IfModule>
    
    ##
    # Disable ETags
    # @see http://developer.yahoo.com/performance/rules.html#etags
    ##
    FileETag None
    <IfModule mod_headers.c>
      Header unset ETag
    </IfModule>
    
    ##
    # Set the proper MIME types
    # @see https://github.com/h5bp/html5-boilerplate
    ##
    <IfModule mod_mime.c>
      AddType application/javascript              js jsonp
      AddType application/json                    json
      AddType audio/ogg                           oga ogg
      AddType audio/mp4                           m4a f4a f4b
      AddType video/ogg                           ogv
      AddType video/mp4                           mp4 m4v f4v f4p
      AddType video/webm                          webm
      AddType video/x-flv                         flv
      AddType image/svg+xml                       svg svgz
      AddEncoding gzip                            svgz
      AddType application/vnd.ms-fontobject       eot
      AddType application/x-font-ttf              ttf ttc
      AddType font/opentype                       otf
      AddType application/x-font-woff             woff woff2
      AddType image/x-icon                        ico
      AddType image/webp                          webp
      AddType text/cache-manifest                 appcache manifest
      AddType text/x-component                    htc
      AddType application/xml                     rss atom xml rdf
      AddType application/x-web-app-manifest+json webapp
      AddType text/x-vcard                        vcf
      AddType application/x-shockwave-flash       swf
    </IfModule>
    
    ##
    # Gzip compression
    # @see https://github.com/h5bp/html5-boilerplate
    ##
    <IfModule mod_deflate.c>
      <IfModule mod_filter.c>
        AddOutputFilterByType DEFLATE text/html text/plain text/css application/json
        AddOutputFilterByType DEFLATE application/javascript
        AddOutputFilterByType DEFLATE text/xml application/xml text/x-component
        AddOutputFilterByType DEFLATE application/xhtml+xml application/rss+xml application/atom+xml
        AddOutputFilterByType DEFLATE image/x-icon image/svg+xml application/vnd.ms-fontobject application/x-font-ttf font/opentype
      </IfModule>
    </IfModule>
    
    ##
    # Expires headers (for better cache control)
    # @see https://github.com/h5bp/html5-boilerplate
    ##
    <IfModule mod_expires.c>
      ExpiresActive on
    
      ##
      # Productional website
      ##
      ExpiresByType text/cache-manifest           "access plus 0 seconds"
      ExpiresByType text/html                     "access plus 0 seconds"
      ExpiresByType text/xml                      "access plus 0 seconds"
      ExpiresByType application/xml               "access plus 0 seconds"
      ExpiresByType application/json              "access plus 0 seconds"
      ExpiresByType application/rss+xml           "access plus 1 hour"
      ExpiresByType application/atom+xml          "access plus 1 hour"
      ExpiresByType image/gif                     "access plus 1 month"
      ExpiresByType image/png                     "access plus 1 month"
      ExpiresByType image/jpeg                    "access plus 1 month"
      ExpiresByType image/x-icon                  "access plus 1 month"
      ExpiresByType video/ogg                     "access plus 1 month"
      ExpiresByType audio/ogg                     "access plus 1 month"
      ExpiresByType video/mp4                     "access plus 1 month"
      ExpiresByType video/webm                    "access plus 1 month"
      ExpiresByType text/x-component              "access plus 1 month"
      ExpiresByType application/x-font-ttf        "access plus 1 month"
      ExpiresByType font/opentype                 "access plus 1 month"
      ExpiresByType application/x-font-woff       "access plus 1 month"
      ExpiresByType image/svg+xml                 "access plus 1 month"
      ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
      ExpiresByType text/css                      "access plus 1 year"
      ExpiresByType application/javascript        "access plus 1 year"
    
      ##
      # Disable caching during development
      # @see https://github.com/contao/core/issues/4364
      ##
      #ExpiresByType text/cache-manifest           "access"
      #ExpiresByType text/html                     "access"
      #ExpiresByType text/xml                      "access"
      #ExpiresByType application/xml               "access"
      #ExpiresByType application/json              "access"
      #ExpiresByType application/rss+xml           "access"
      #ExpiresByType application/atom+xml          "access"
      #ExpiresByType image/gif                     "access"
      #ExpiresByType image/png                     "access"
      #ExpiresByType image/jpeg                    "access"
      #ExpiresByType image/x-icon                  "access"
      #ExpiresByType video/ogg                     "access"
      #ExpiresByType audio/ogg                     "access"
      #ExpiresByType video/mp4                     "access"
      #ExpiresByType video/webm                    "access"
      #ExpiresByType text/x-component              "access"
      #ExpiresByType application/x-font-ttf        "access"
      #ExpiresByType font/opentype                 "access"
      #ExpiresByType application/x-font-woff       "access"
      #ExpiresByType image/svg+xml                 "access"
      #ExpiresByType application/vnd.ms-fontobject "access"
      #ExpiresByType text/css                      "access"
      #ExpiresByType application/javascript        "access"
    
    </IfModule>
    
    ##
    # Header adjustments
    ##
    <IfModule mod_headers.c>
    
      ##
      # Disable caching during development
      # @see https://github.com/contao/core/issues/4364
      ##
      #Header unset Cache-Control
      #Header append Cache-Control must-revalidate
    
      ##
      # Do not cache the cron.txt file
      # @see https://github.com/contao/core/issues/5105
      ##
      <FilesMatch "cron\.txt$">
        Header set Cache-Control "no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, no-transform"
      </FilesMatch>
    
      ##
      # Add a Vary Accept-Encoding header for the compressed resources. If you
      # modify the file types above, make sure to change them here accordingly.
      # @see http://developer.yahoo.com/performance/rules.html#gzip
      #
      # Note: If you are using a case-sensitive file system like HFS+ or ext4, you
      # have to change the <FilesMatch> directive as follows:
      #
      # <FilesMatch "\.(?i:js|css|xml|gz|svgz)$">
      #
      # For more information see: https://github.com/contao/core/issues/4364
      ##
      <FilesMatch "\.(js|css|xml|gz|svgz)$">
        Header append Vary Accept-Encoding
      </FilesMatch>
    
    </IfModule>
    
    ##
    # Disable MultiViews if you are having issues with requests returning the wrong
    # page. Requires AllowOverride Options=All,MultiViews to be set here.
    # @see https://github.com/contao/core/issues/3521
    ##
    #Options -MultiViews
    
    ##
    # URL rewriting
    ##
    <IfModule mod_rewrite.c>
      RewriteEngine On
    
      ##
      # Change the RewriteBase if your Contao installation is in a subdirectoy and
      # the rewrite rules are not working properly. Usage examples:
      #
      #   RewriteBase /contao-3.0.0
      #   RewriteBase /path/to/contao
      #
      # Depending on your server, you might have to remove the line entirely.
      ##
      RewriteBase /
      
      ##
      # Uncomment the following lines to add "www." to the domain:
      #
        # RewriteCond %{HTTP_HOST} ^fst-halberstadt\.de$ [NC]
        # RewriteRule (.*) http://www.fst-halberstadt.de/$1 [R=301,L]
    	#
    	# RewriteCond %{HTTP_HOST} ^systemische-fachtagung\.de$ [NC]
        # RewriteRule (.*) http://www.systemische-fachtagung.de/$1 [R=301,L]
    	#
      # Uncomment the following lines to remove "www." from the domain:
      #
      RewriteCond %{HTTP_HOST} ^www\.fst-halberstadt\.de$ [NC]
      RewriteRule (.*) http://fst-halberstadt.de/$1 [R=301,L]
      #
      RewriteCond %{HTTP_HOST} ^www\.systemische-fachtagung\.de$ [NC]
      RewriteRule (.*) http://systemische-fachtagung.de/$1 [R=301,L]
      #
      # Make sure to replace "example.com" with your domain name.
      ##
    
      ##
      # If you cannot use mod_deflate, uncomment the following lines to load a
      # compressed .gz version of the aggregated Contao JavaScript and CSS files.
      ##
      #AddEncoding gzip .gz
      #<FilesMatch "\.js\.gz$">
      #  AddType "application/javascript" .gz
      #</FilesMatch>
      #<FilesMatch "\.css\.gz$">
      #  AddType "text/css" .gz
      #</FilesMatch>
      #RewriteCond %{HTTP:Accept-encoding} gzip
      #RewriteCond %{REQUEST_FILENAME} \.(js|css)$
      #RewriteCond %{REQUEST_FILENAME}.gz -f
      #RewriteRule ^(.*)$ $1.gz [QSA,L]
    
      ##
      # By default, Contao adds ".html" to the generated URLs to simulate static
      # HTML documents. If you change the URL suffix in the back end settings, make
      # sure to change it here accordingly!
      #
      #   RewriteRule .*\.html$ index.php [L]   # URL suffix .html
      #   RewriteRule .*\.txt$ index.php [L]    # URL suffix .txt
      #   RewriteRule .*\.json$ index.php [L]   # URL suffix .json
      #
      # If you do not want to use an URL suffix at all, you have to add a third
      # line to prevent URLs that point to folders from being rewritten (see #4031).
      #
      #   RewriteCond %{REQUEST_FILENAME} !-d
      #   RewriteRule .* index.php [L]
      #
      # If you are using mod_cache, it is recommended to use the RewriteRule below,
      # which adds the query string to the internal URL:
      #
      #   RewriteRule (.*\.html)$ index.php/$1 [L]
      #
      # Note that not all environments support mod_rewrite and mod_cache.
      ##
      RewriteCond %{REQUEST_FILENAME} !\.(htm|php|js|css|map|htc|png|gif|jpe?g|ico|xml|csv|txt|swf|flv|mp4|webm|ogv|mp3|ogg|oga|eot|otf|tt[cf]|woff2?|svgz?|pdf|gz)$
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule .*\.html$ index.php [L]
    
      ##
      # The following rules are required if you want to pass the language as first
      # URL parameter (added in Contao 2.11). The first rule rewrites the empty URL
      # to the front end controller, the second one adds a missing trailing slash.
      ##
      RewriteRule ^[a-z]{2}(\-[A-Z]{2})?/$ index.php [L]
      RewriteRule ^([a-z]{2}(\-[A-Z]{2})?)$ $1/ [R=301,L]
      
      RewriteRule ^fortbildungen.php$ fortbildungen.html
      RewriteRule ^fortbildungen_traumpaedagogik.php$ fortbildungen_traumpaedagogik.html
      RewriteRule ^systemische_weiterbildung_referenten.php$ systemische_weiterbildung_referenten.html
      RewriteRule ^praxis_familientherapie.php$ praxis_familientherapie.html
    
    </IfModule>
    Geändert von andreas.metius (15.03.2018 um 11:56 Uhr)

  7. #7
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.108
    Partner-ID
    10107

    Standard

    Wenn dann musst du
    Code:
    ErrorDocument 404 index.php
    verwenden. Außerdem solltest du das hier:
    Code:
      RewriteRule ^fortbildungen.php$ fortbildungen.html
      RewriteRule ^fortbildungen_traumpaedagogik.php$ fortbildungen_traumpaedagogik.html
      RewriteRule ^systemische_weiterbildung_referenten.php$ systemische_weiterbildung_referenten.html
      RewriteRule ^praxis_familientherapie.php$ praxis_familientherapie.html
    Lieber mit RedirectMatch umsetzen, imho.

  8. #8
    Contao-Nutzer
    Registriert seit
    17.03.2011.
    Ort
    Halberstadt
    Beiträge
    6

    Standard

    Vielen Dank für deinen Lösungsansatz!

    Zitat Zitat von Spooky Beitrag anzeigen
    Wenn dann musst du
    Code:
    ErrorDocument 404 index.php
    verwenden. Außerdem solltest du das hier:
    Code:
      RewriteRule ^fortbildungen.php$ fortbildungen.html
      RewriteRule ^fortbildungen_traumpaedagogik.php$ fortbildungen_traumpaedagogik.html
      RewriteRule ^systemische_weiterbildung_referenten.php$ systemische_weiterbildung_referenten.html
      RewriteRule ^praxis_familientherapie.php$ praxis_familientherapie.html
    Lieber mit RedirectMatch umsetzen, imho.
    Ohne Slash "/" funktioniert das ErrorDocument leider nicht und es wird eine HTML-Seite mit dem Text "index.php" angezeigt

    Meine Recherche zu "RedirectMatch" und die von mir angepassten Codeschnipsel funktionierten auch (noch) nicht, z.B.:

    Code:
    # aus html php wird shtml html
    #RedirectMatch permanent (.*)\.html$ http://www.domain.de$1.shtml
    RedirectMatch permanent (.*)\.php$ http://www.domain.de$1.html
    Fehlendes Know-how meinerseits. Ich arbeite dran.

    A) Hat vielleicht jemand eine smarte Lösung, bei der ich nicht jede einzelne Seite über RewriteRule "umschreiben" muss ?

    B) Warum funktioniert eigentlich das Suchmodul nicht, wenn nach der Umleitung auf das ErrorDocument 404 in der URL die alte PHP-Seite steht?
    Geändert von andreas.metius (15.03.2018 um 12:13 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •