Ergebnis 1 bis 9 von 9

Thema: .htaccess fehlerhaft bei URLs ohne Suffix

  1. #1
    Contao-Nutzer
    Registriert seit
    13.05.2016.
    Beiträge
    52

    Standard .htaccess fehlerhaft bei URLs ohne Suffix

    Ich habe nun zum ersten mal versucht, URLs ohne .html Suffix zu verwenden. Dabei habe ich die mod_rewrite Direktiven in der .htaccess wie folgt angepasst:

    Code:
    <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} ^example\.com$ [NC]
      #   RewriteRule (.*) http://www.example.com/$1 [R=301,L]
      #
      # Uncomment the following lines to remove "www." from the domain:
      #
      #   RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
      #   RewriteRule (.*) http://example.com/$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|zip|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]
    
    </IfModule>
    Also eigentlich nur die Kommentar vor
    Code:
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule .* index.php [L]
    weg genommen, wie beschrieben.

    Nur bringt das nicht das Ergebnis das man sich erhofft. Das Frontend funktioniert nicht wirklich (die Seiten gehen, aber die Assets werden nicht gefunden), das Backend ist dadurch aber nicht mehr erreichbar. Nur wie es in diesem Blog beschrieben ist, funktioniert es einigermaßen korrekt. http://www.novo-online.de/blog/2015/...ml-in-der-url/ (urls ohne / Suffix zB domain.com/seite vs domain.com/seite/ werden nicht entsprechend weitergeleitet und geben auch ein not found aus)

    Soll ich dazu ein Ticket aufmachen?
    Geändert von choki (11.07.2016 um 18:21 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

    Nein, du darfst nicht einfach die Kommentare entfernen, das steht da auch nirgends, sondern musst die Zeilen weiter unten entsprechend ersetzen und oben die zwei Zeilen Kommentar wieder auskommentieren.
    Code:
      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|zip|gz)$ 
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule .* index.php [L]

  3. #3
    Contao-Nutzer
    Registriert seit
    13.05.2016.
    Beiträge
    52

    Standard

    Danke, das hat mich etwas in die irre geführt aber jetzt sehe ich erst die zwei ## ergeben einen ganzen Kommentarblock. Weisst Du auch wie ich URLs mit und ohne trailing slash aufrufen kann? Momentan funktioniert es nur mit, aber diese Seite http://www.diermeier-energie.de/schmierstoffe/ ist auch unter http://www.diermeier-energie.de/schmierstoffe erreichbar (man beachte den Slash am Ende).

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

    Support Contao

    Standard

    Mit und ohne / erreichbar? Wow, da haben her schon einige angefragt, wie sie das wegbringen aus (unbegründeter) Angst vor Duplicate Content. Sorry, ich weiss, dass es hier schon entsprechende Threads geben muss, diese komischen URLs kommen ja immer mal wieder hoch, aber ich habe gerade keine Zeit die Contao-Google-Suche intensiver danach zu durchforsten.

  5. #5
    Contao-Nutzer
    Registriert seit
    13.05.2016.
    Beiträge
    52

    Standard

    DC ist dabei kein Problem, solange es mit canonical eine dominante URL gibt. Ich verstehe halt nicht warum Contao zu solchen Defaults greift. Ein Suffix bietet keinen Mehrwert und ist mehr von Nachteil. URLs müssen kurz und knackig sein, am besten leicht zu merken, dann werden sie auch verwendet.
    Geändert von choki (11.07.2016 um 19:24 Uhr)

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

    Standard

    Warum brauchst du das unbedingt?

  7. #7
    Contao-Nutzer
    Registriert seit
    07.07.2016.
    Beiträge
    8

    Standard Relikt aus alten Zeiten...

    Hallo choki,

    ich denke das mit der .html-Endung ist ein Relikt aus alten Zeiten und sollte je nach Zielgruppe auch noch verwedet werden. Ich persönlich finde kurze URL auch besser, da man sie mal schnell im Smartphone eintippen kann...

    Zu deinem Problem, man könnte folgendes der .htaccess hinzufügen (ungetestet):
    HTML-Code:
    	## URL mit Slash am Ende eigegeben
    	RewriteCond %{REQUEST_FILENAME} !-f
    		#Ausnahmen:
    		RewriteCond %{REQUEST_URI} !(/contao/|/check/|/assets/)$
    	RewriteCond %{REQUEST_URI} !(.*)/$
    	RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
    	
    	## URL ohne Slash am Ende eingegeben
    	RewriteCond %{REQUEST_FILENAME} !-f
    		#Ausnahmen:
    		RewriteCond %{REQUEST_URI} !(/contao/|/check/|/assets/)$
    	RewriteCond %{REQUEST_URI} (.*)/$
    	RewriteRule ^(.*)/$ http://www.example.com/$1 [R=301,L]
    Gruß
    Christian

  8. #8
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Mein Betriebssystem zeigt mir für jede Datei, welche einen Suffix hat diesen auch an. Einen Pfad mit einem Slash am Ende ist für mich erstmal ein Ordner. Ein Pfad ohne Slash und ohne Suffix signalisiert mir ein Dokument ohne Suffix. Ich persönlich bevorzuge deshalb Dokumente mit einem Suffix, also auch in der Adressleiste. Ich möchte nicht erst beim Speichern eines Dokuments den Mime-Typ sehen, sondern schon vorher (ich weiß, dass der Suffix nicht unbedingt der Mime-Typ ist).

    Beim Weiterreichen eines Links finde ich es auch besser, wenn ich direkt sehe, da kommt eine PDF, ein Bild, ein XLS, ein HTML oder was auch immer. Ich lasse mich da ungerne überraschen. Auch die Unart, hier im Forum des öfteren gesehen, solche kurzen kryptischen Links anzubieten, welche dann auf die eigentliche URL weiterleiten finde ich ärgerlich. Ich möchte schon anhand des Linktextes od. zumindestens bei mouseover das Linkziel sehen.

    Auf dem Mobile sucht man ja meistens sowieso nur nach der Domain und geht mit dem Menü zur gewünschten Seite oder holt die Seite aus den Favoriten oder dem Verlauf.

    Ich persönlich empfinde also das Weglassen eines Datei-Suffix als Unart, den das Einsparen des Eintippens von ".html" nicht wett macht.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  9. #9
    Contao-Nutzer
    Registriert seit
    13.05.2016.
    Beiträge
    52

    Standard

    Hallo,

    ich habe es inzwischen hinbekommen, jemand aus dem Forum verwendet dazu folgendes:

    Code:
      RewriteCond %{REQUEST_URI} ^/[^\.]+[^/]$
      RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]
    
      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|zip|gz)$
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule .* index.php [L]

    Zitat Zitat von Andreas Beitrag anzeigen
    Mein Betriebssystem zeigt mir für jede Datei, welche einen Suffix hat diesen auch an. Einen Pfad mit einem Slash am Ende ist für mich erstmal ein Ordner. Ein Pfad ohne Slash und ohne Suffix signalisiert mir ein Dokument ohne Suffix. Ich persönlich bevorzuge deshalb Dokumente mit einem Suffix, also auch in der Adressleiste. Ich möchte nicht erst beim Speichern eines Dokuments den Mime-Typ sehen, sondern schon vorher (ich weiß, dass der Suffix nicht unbedingt der Mime-Typ ist).

    Beim Weiterreichen eines Links finde ich es auch besser, wenn ich direkt sehe, da kommt eine PDF, ein Bild, ein XLS, ein HTML oder was auch immer. Ich lasse mich da ungerne überraschen. Auch die Unart, hier im Forum des öfteren gesehen, solche kurzen kryptischen Links anzubieten, welche dann auf die eigentliche URL weiterleiten finde ich ärgerlich. Ich möchte schon anhand des Linktextes od. zumindestens bei mouseover das Linkziel sehen.

    Ich persönlich empfinde also das Weglassen eines Datei-Suffix als Unart, den das Einsparen des Eintippens von ".html" nicht wett macht.
    Eine Website spiegelt aber eine Hierarchie wieder, in der sowohl Ordner als auch einzelne Dateien aufgerufen werden koennen. Grundsaetzlich koennte ein Besucher auf die Idee kommen, einzelne Segmente eines Pfades wegzulassen um sich dadurch einen Ueberblick zu verschaffen (foo.com/katzen/bilder -> foo.com/katzen). Da finde ich es von der Benutzbarkeit her besser, URLs mit und ohne Slash/Suffix allesamt gleich zu behandeln. Dein Betriebssystem kann einen Ordner ohne Slash am Ende aufrufen, auch wenn das nicht ganz korrekt sein mag (soweit mir bekannt unter GNU/Linux ohne weiteres moeglich). Das Herunterladen von Dateien (Downloads) ist davon ohnehin nicht betroffen und zeigt den korrekt MIME-Typ an.

    Eine URL ohne Suffix impliziert schon per se ein HTML-Dokument. Ich verwende keine kryptischen Links sondern meist einen kurzen, aussagekraeftigen und flachen (unverschachtelten) Alias.

    Ich bilde die Struktur meiner Seiten hauptsaechlich ueber Breadcrumbs und schema.org ab. Da ich der Utopie, das gesamte Ausmass des Inhalts schon vorher zu wissen, nichts abgewinnen kann, halte ich diese Herangehensweise fuer eine besser Loesung. Ausserdem habe ich dadurch den Vorteil, die Struktur einer Website spaeter grundlegend zu aendern, ohne aber eine neue URL dadurch verwenden zu muessen. (Wenn ich in einem spaeteren Verlauf darauf kommen sollte, dass foo.com/bilder/katzen doch besser geeignet ist als umgekehrt). URLs sollte man nie loeschen und dafuer jedes mal eine 301-Weiterleitung einzurichten ist mir zu muehsam.

    Content-Development done right.
    Geändert von choki (19.07.2016 um 20:25 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
  •