Suchmaschinenfreundliche URL (SEF) benutzen

  • Hallo liebe Joomla Gemeinde,


    Ich stehe vor einem Problem und komme einfache nicht weiter. Ich habe schon vieles ausprobiert, aber ich komme zu keiner Lösung. Es geht um die Erstellung von Suchmaschinenfreundlichen URLs auf meiner Homepage. Zentraler Dreh- und Angelpunkt ist wohl die htaccess Datei. Wenn ich ein mein Joomla Verzeichnis wechsele sind aber von Beginn an zwei Dateien vorhanden


    - htaccess.txt

    -.htaccess


    Deshalb habe ich den Inhalt der .htaccess mit dem Inhalt txt-Datei ergänzt. Sobald ich die Datei abspeichere kann ich nicht mehr auf die Administrator Seite und eine Fehlermeldung (500 Internal Server Error). Wenn man sich die .htaccess-Datei ansieht, dann ist als zusätzliche Zeile DirectoryIndex index.htm angegeben. Alle anderen Zeilen finden sich auch in der htaccess-Datei.


    Bisher habe zwei Varianten durchgetestet.


    # RewriteBase / (Kommentarzeichen entfernt)

    Options +FollowSymlinks (auskommentieren)


    Beides ohne Erfolg. Hat jemand eine Idee?



    Der Inhalt meiner originalen .htaccess-Datei lautet:


    # Synology PHP

    AddHandler default-handler .htm .html .shtml

    AddHandler php-fastcgi .php

    AddType text/html .php

    Action php-fastcgi /php56-fpm-handler.fcgi

    # Synology PHP

    DirectoryIndex index.htm <<<<<<<<<<<<<< zusätzliche Zeile!






    Der Inhalt meiner originalen htaccess.txt Datei lautet:


  • Erstmal herzlichen Dank für Eure schnellen Antworten.

    Ist denn mod_rewrite überhaupt in der PHP bzw Serverumgebung installiert und aktiv?

    Ich dachte allein schon mit Erstellung der .htaccess Daei wird mod_rewrite aktiviert. In den Systeminformationen -> php-Informationen kann ich keine Erwähnung von mod_rewrite finden. Nach einigen googlen gibt es noch die Idee mod_rewrite per folgenden Befehl zu aktivieren, weiß aber nicht wie sinnvoll das ist:


    a2enmod rewrite


    und dann Apache Server neustarten mit


    /etc/init.d/apache2 restart


    Setze die Zeile mit DirectoryIndex mal als Kommentar, also mit # davor!

    Wozu soll die dienen?


    EDIT: Und für welche Joomla-Version benötigst du PHP 5.6?


    Habe die entsprechende Zeile auskommentiert und das Laden der Seite läuft trotzdem problemlos. Also daran kann es nicht liegen.

    Ich habe einen ApacheServer mit der Version 2.2.34 und eine PHP Version 5.6.39

    Bei den Versionen bin ich immer von Synology abhängig, da nur Synology verzögert Updates herausbringt.


    Gerade eben habe ich noch versucht hinter RewriteBase /{den Pfad meiner Joomla Installation} einzufügen, aber ohne Erfolg.


    Also wie folgt:


    RewriteBase /volume1/web/joomla

  • Empfohlen wird Apache 2.4+ mit mod_rewrite und anderen Modulen....

    Die technischen Voraussetzungen mögen vielleicht erfüllt sein, sind aber mehr als veraltet.


    mod_rewrite wird unbedingt benötigt.


    Bei den htaccess-Einträgen können durchaus mehrere Einträge gleichzeitig zu einem Problem führen. Bloß weil das (aus-)kommentieren nicht den gewünschten Erfolg hat, darf man nicht davon ausgehen, dass ein bestimmter Eintrag egal ist oder gar richtig.


    Bei RewriteBase setzt man das Unterverzeichnis unter /htdocs bzw. /html und nicht den ganzen Pfad. Mit Synology kenne ich mich allerdings nicht aus. Und am besten schließt man das letzte Verzeichnis immer mit einem / ab.

    In seltenen Fällen könnte das sonst zu Problemen führen. RewriteBase sollte aber eigentlich keinen 500er erzeugen, sondern führt eher dazu, dass man beim Aufrufen von Menüpunkte einen 404 erhält.

    So ein Eintrag könnte beispielsweise folgendermaßen ausschauen: RewriteBase /joomla/


    Das aktuelle Joomla läuft mit PHP 7.3 und 7.4. Lediglich die ein oder andere Drittanbieter-Erweiterung könnte mit PHP 7.4 noch Probleme haben. PHP 7.2 wird ab Herbst übrigens auch nicht mehr unterstützt. Es besteht also Handlungsbedarf!


    EDIT: Und in der htaccess.txt steht noch was von 2018. Das deutet auch auf ein veraltetes Joomla hin. Aktuell wäre 3.9.19 .

  • Zitat

    kann ich nicht mehr auf die Administrator Seite und eine Fehlermeldung (500 Internal Server Error).

    Du hast aber schon in der Konfiguration - Site - Suchmaschinenoptimierung 'URL-ReWrite nutzen' auf 'Ja' Stehen?


  • Aufgrund der Warnung bei der Option "URL-Rewrite nutzen" habe ich mich strikt nach Vorgabe gehalten. Denn dort steht für Apache Server erst die .htaccess Datei modifizieren und dann im Backend "URL-rewrite nutzen" aktivieren. Nur leider komme ich nicht mehr ein meine Admin Seite nachdem ich meine .htaccess modifiziert habe, es kommt sofort die oben erwähnte Fehlermeldung.

  • Zitat

    erst die .htaccess Datei modifizieren und dann im Backend "URL-rewrite nutzen

    Also von 'modifizieren' steht da nichts.

    Du sollst sie vorher 'aktivieren', also in .htaccess umbenennen.


    Ich kenne deinen Hoster nicht, aber normalerweise musst du an der htaccess.txt aus einer normalen Joomla-Version

    nichts verändern.


    Nimm die originale htaccess.txt, von mir aus aus einer neuen Installation, und benenne sie in .htaccess um.

    Dann sollte es funktionieren.


    Zitat

    Nur leider komme ich nicht mehr ein meine Admin Seite

    Dann deaktiviere die/deine modifizierte .htaccess zu htaccess.txt oder lösche sie (Backup machen!).

  • Du könntest auch in der configuration.php den Wert 'rewrite' auf '0' setzen, vielleicht klappt es ja:

    Gerade einmal nachgeschaut. Der Wert 'rewrite' ist bereits auf '0'


    RewriteBase sollte aber eigentlich keinen 500er erzeugen, sondern führt eher dazu, dass man beim Aufrufen von Menüpunkte einen 404 erhält.

    Ich hatte mir gedacht, ob es nicht sinnvoll wäre nur einen Teil der htaccess.txt in die .htaccess zu übernehmen. Also etwa nur den folgenden Bereich und den anderen Teil, der laut Kommentar nur common exploits behandelt, außen vorläßt. Ergebnis: 500er Error


    # RewriteBase /


    ## Begin - Joomla! core SEF Section.

    #

    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    #

    # If the requested path and file is not /index.php and the request

    # has not already been internally rewritten to the index.php script

    RewriteCond %{REQUEST_URI} !^/index\.php

    # and the requested path and file doesn't directly match a physical file

    RewriteCond %{REQUEST_FILENAME} !-f

    # and the requested path and file doesn't directly match a physical folder

    RewriteCond %{REQUEST_FILENAME} !-d

    # internally rewrite the request to the index.php script

    RewriteRule .* index.php [L]

    #

    ## End - Joomla! core SEF Section.

  • 1. Du musst in jedem Fall das "RewriteEngine on" in der .htaccess haben und zwar in der Reihenfolge, wie es auch in der htaccess.txt steht.


    2. Ich gehe davon aus, dass deine Seite mit deiner originalen .htaccess (wie du sie bezeichnest) läuft. Dementsprechend kann es nicht an den Synology-Einträgen liegen, welche die PHP-Version einstellen usw. Oder sehe ich das falsch? Zu deren Richtigkeit kann ich aber nichts sagen.

    Ansonsten: Kann man diese Werte (z.B. PHP-Version) irgendwo global einstellen? Globale und lokale PHP-Version dürfen beispielsweise nicht auf dem gleichen Wert stehen. Dies erzeugt meist einen 500er-Fehler.

    Was passiert, wenn du diese Einträge alle mal entfernst?


    3. Hast du mittlerweile überprüft, ob mod_rewrite überhaupt funktioniert? Google mal! Da gibt es zum Überprüfen mehrere Möglichkeiten, z.B hier:

    https://www.templatemonster.co…is-enabled-on-server.html

  • 1. Du musst in jedem Fall das "RewriteEngine on" in der .htaccess haben und zwar in der Reihenfolge, wie es auch in der htaccess.txt steht.

    Ok. Es sei an dieser Stelle noch erwähnt, daß bei Aktivierung der SEO "Suchmaschinenfreundliche URL" OHNE "URL-Rewrite nutzen", die Beiträge schon nicht richtig aufgerufen werden. Es erscheint dann 404 Error. Ich komme aber wenigstens auf meine AdminSeite. Es ist besser sich erst darum zu kümmern?

    2. Ich gehe davon aus, dass deine Seite mit deiner originalen .htaccess (wie du sie bezeichnest) läuft

    Die Seite läuft mit den weiter oben gepostenen Inhalt. Auch dann, wenn ich in der Datei alles raus lösche, also eine leere .htaccess-Datei benutze.


    Globale und lokale PHP-Version dürfen beispielsweise nicht auf dem gleichen Wert stehen.

    Ich habe bisher nirgends eine Option gesehen bei der man einen Wert auswählen kann. Meinst du eine spezielle Konfigurationsdatei?

    Was passiert, wenn du diese Einträge alle mal entfernst?

    Ich bereits erwähnt, läuft die Webseite selbst mit leerer .htaccess Datei

    3. Hast du mittlerweile überprüft, ob mod_rewrite überhaupt funktioniert?

    Ich habe die von Dir vorgeschlagene Methode benutzt. Also genauso wie es dort beschrieben wird. Das Ergebnis ist dass die Homepage normal geladen wird, es gibt also kein "activated" .

  • Wenn die Seite ohne diese ganzen Einträge für Synology ganz normal läuft, dann lass diese zunächst weg! Wäre dann interessant zu wissen, was unter Systeminformationen im Joomla-Backend so angezeigt wird. Laufende PHP-Version, Anbindung usw.


    Und wenn der Test nicht erfolgreich war, wird mod_rewrite wahrscheinlich nicht aktiviert sein bzw. nicht zur Verfügung stehen. Das benötigst du aber. Dann müsstest du dich darum kümmern, wie du das zum Laufen bekommst. Ist aber dann kein Jooml-Problem mehr.


    Wenn hier im Forum niemand weitere Tipps zu Synology geben kann, müsstest du dich anderweitig umhören.


    Dass die Seite ohne htaccess und "SEO-Rewrite nutzen" auch schon 404 auf Unterseiten wirft, wurde von dir aber bisher nicht erwähnt. Das muss dann ja noch mindestens einen weiteren Grund haben. Vielleicht müsstest du mal jemanden direkt draufschauen lassen.