#1

Thomas

Moderator  (2324 Punkte)  ·   männlich  ·   Deutschland  ·   Nachricht senden
 https://siquando-designs.de

Hallo zusammen,

durch Zufall bin ich auf ein Bug gestossen, für den ich bisher noch keine Lösung finden konnte. Enthält eine Adresse "index.php" wird "index.php" nicht entfernt (Beispiel: https://siquando-designs.de/index.php/pro-layouts/karo-flex/ korrekt wäre https://siquando-designs.de/pro-layouts/karo-flex/) und die Seite wird fehlerhaft dargestellt. Ich habe es bereits auf verschiedenen Adressen getestet (auch von anderen Usern hier aus dem Forum) und das Ergebnis ist leider immer das Gleiche: der Inhalt wird angezeigt, ohne CSS-Formatierung und Bildern.

Auch die weiteren Verlinkungen sind dann fehlerhaft was Google nicht gerade begeistert (Seiten werden dann teilweise falsch und unnötig gecrawlt).

Habt ihr eine Idee? Ich habe Verschiedenes probiert, konnte aber bisher keien Lösung finden.

Siquando möchte ich nicht schreiben, schließlich verwende ich ein Fremddesign 😛 ...


Viele Grüße
Thomas

siquando-designs.de (NEU: KARO Flex Layout, Santa Cruz Pro für Pro Shop und Apollon 11 für Siquando Shop, Templateübersicht & Support für Shop 11 + Pro Web 9)


Dieser Beitrag wurde bereits 1 mal bearbeitet, zuletzt von »Thomas« (25.11.2024, 21:43)
#2

MuggelClan

Forum-Sponsor  (1124 Punkte)  ·   männlich  ·   Deutschland  ·   Nachricht senden

Hallo Thomas,

auf einige Forum-Seiten von CMS-Programmen kann man lesen, das angeblich die "index.php" zur Funktion des CMS-System benötigt wird, also ohne dies nicht funktionieren würde. Hierzu kann jedoch nur SIQUANDO selber eine Aussage machen, ob dies bei SIQUANDO-Pro auch der Fall ist (übrigens ist dieser Fehler, wenn es ein Fehler sein sollte, bereits schon seit WebToDate NG vorhanden, habe es auch mit WebToDate NG feststellen können, war also noch nie aufgefallen). Man kann auch lesen, das Google dies weiß und auch diese /index.php/ Seiten immer ausgeschlossen hat. Dies scheint wohl nicht mehr der Fall zu sein.

Ich kenne bisher nur eine Lösung um das Problem mit Google-Crawl zu lösen:

Im ProjektCentral kann man die .htaccess Datei mit RedirectMatch eine Umleitung ergänzen.
Für alle die dies tun möchten:
- "Allgemeine Eigenschaften festlegen"
- Reiter "Webserver"
- "Apache .htaccess bearbeiten" klicken'
- folgendes z.B. eintragen:

RedirectMatch 301 ^/index.php/(.*) /$1

- 3x "OK" klicken (mit dem dritten OK wird die Änderung auf den Server übertragen.

Wichtig ist also an Google zu signalisieren, dass diese /index.php/-Zusatz-Seiten mit dem HTTP-Statuscode 301 „Permanent umgezogen“ weitergeleitet wird.


Mit freundlichen Grüßen

Thomas

Web To Date seit 2004, Siquando Web 12, Pro Web 9, Web Client 

#3

Thomas

Moderator  (2324 Punkte)  ·   männlich  ·   Deutschland  ·   Nachricht senden
 https://siquando-designs.de

Der von dir beschriebene Weg fügt die Regel ans Ende der .htaccess ein, wo bereits andere Regeln greifen müssten. Und auch diese Umleitung habe ich bereits an verschiedenen Stellen der .htaccess probiert (direkt durch Anpassung auf dem Server). Ohne Erfolg.


Viele Grüße
Thomas

siquando-designs.de (NEU: KARO Flex Layout, Santa Cruz Pro für Pro Shop und Apollon 11 für Siquando Shop, Templateübersicht & Support für Shop 11 + Pro Web 9)

#4

MuggelClan

Forum-Sponsor  (1124 Punkte)  ·   männlich  ·   Deutschland  ·   Nachricht senden

Bei mir funktioniert es, folgende Haken sind bei mir bei "Allgemeine Eigenschaften festlegen" - Reiter "Webserver"gesetzt:

- Erweiterte Schreibrechte via CHMOD
- Vanity-URLs aktivieren, benötigt MOD_REWRITE
- URLs, die auf .php enden, alternativ zu .html akteptieren
- URLs, bei denen ein abschließendes / fehlt, umleiten, wenn möglich

Das sieht dann bei mir so in der .htaccess aus:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /


RewriteRule ^sitemap\.xml$ /sitemap.xml.php [L]
RewriteRule ^robots\.txt$ /robots.txt.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteRule ^(.*)$ /index.php?ngq=/$1 [QSA,L]
</IfModule>

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
</IfModule>

RedirectMatch 301 ^/index.php/(.*) /$1

Natürlich wird alles was bei "Apache .htaccess bearbeiten" eingefügt wird unten ergänzt, aber da ganz oben bereits "RewriteEngine On" ist, wird diese auch unten nicht ein zweites mal benötigt. MOD_REWRITE wird ja auch schon für die Vanity-URLs benötigt.
Falls also eine andere Einstellung notwendig ist bzw. nicht vorhanden ist, dann muss natürlich für " RedirectMatch 301 ^/index.php/(.*) /$1 " oberhalb " RewriteEngine On " hinzugefügt werden.
Das <ifModule ... > überprüft ja auch nur ob das Modul vorhanden ist oder nicht.

Wie bereits geschrieben, bei mir funtioniert die Umleitung so. Abhängig könnte es eventuell von der Apache-Version sein. Hierzu kann ich nichts sagen.
Es gibt aber auch die Möglichkeit nur mit Redirect zu versuchen oder aber auch gleich mit RewriteRule. Wenn überprüft werden soll, on das Modul vorhanden ist, dann kann auch wie im obigen Beispiel das ganze auch in <IfModule mod_rewrite.c> .... <IfModule> gesetzt werden. Ist jedoch überflüssig, wenn das ja schon zuvor geprüft wurde, bzw. ja eigentlich bereits schon aus anderen Gründen gebraucht wurde und auch funktionierte.

Ich hoffe ich habe jetzt keinen verwirrt, eigentlich reichen zwei Zeilen zu ergänzen wenn RewriteEngine nicht bereits on ist:

RewriteEngine On
RedirectMatch 301 ^/index.php/(.*) /$1

 


Mit freundlichen Grüßen

Thomas

Web To Date seit 2004, Siquando Web 12, Pro Web 9, Web Client 


Dieser Beitrag wurde bereits 1 mal bearbeitet, zuletzt von »MuggelClan« (26.11.2024, 22:43)
#5

Thomas

Moderator  (2324 Punkte)  ·   männlich  ·   Deutschland  ·   Nachricht senden
 https://siquando-designs.de

Ich habe die Änderung bereits auf verschiedenen Servern (mit Plesk-Installationen) getestet, und der Fehler bleibt.

Aus Interesse habe ich soeben verschiedene Seiten unsere Forum-User getestet und der Fehler tritt überall auf, bspw. auch bei Volker.


Viele Grüße
Thomas

siquando-designs.de (NEU: KARO Flex Layout, Santa Cruz Pro für Pro Shop und Apollon 11 für Siquando Shop, Templateübersicht & Support für Shop 11 + Pro Web 9)

#6

MuggelClan

Forum-Sponsor  (1124 Punkte)  ·   männlich  ·   Deutschland  ·   Nachricht senden

Ok, oder leider nicht OK. Ich bin bei IONOS und da hat es so bei mir geklappt, aber könnte auch vom Vertrag oder Provider-Einschränkungen abhängig sein. Verschiedene Schreibweisen findet man auch im Internet.

Es kann eventuell an der Servereinstellung selbst liegen, eventuell steht nicht alle Möglichkeiten zur verfügung.
Es gibt auf der folgenden Seite bei ALL-INKL.COM die eine Redirect-Umleitung beschreibt:
Anleitungen, Skripte, Sonstiges, Weiterleitung auf eine andere Domain: per .htaccess und Redirect

Dort steht leider als Hinweis: Diese Weiterleitungsmethode funktioniert erst ab einem all-inkl Privat Paket ...

Weiter kann es auch möglich sein, dass der Server auf die Prüfung des Vohandensein von <IfModule mod_rewrite.c> besteht.

Hier mal eine Umleitung mit der kleineren nicht so weitreichenden Variante Redirect, wie es bei ALL-INKL.COM empfohlen wird:

Redirect 301 ^/index.php/(.*) /$1

Zur Erklärung was die Zeile ausführt:
301 = Status-Code (permanete Umleitung)
^ = Beginn der Zeichenkette, die übereinstimmen soll
(.*) = erfasst den URL-Bereich danach
$1 = gibt die Zeichenkette nach / aus

Auf der Seite von ALL-INKL.COM wird ebenfalls nur die eine Zeile angegeben, so das man eigentlich davon ausgehen kann, dass bereits das Modul vorhanden ist und auch RewriteEngine auf On steht, ABER ich würde mal ALL-INKL.COM mal fragen.

Hier wäre dann die Lösung z.B. mit RewriteRule als kompletter alleinstehender mod_rewrite.c - Code:

<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteBase /
	RewriteRule ^/index.php/(.*) /$1 [R=301,L]
</IfModule>

RewriteBase müsste ja normalerweise schon vorhanden sein, habs aber mal trotzdem geschrieben. Wenn also Code-Teile schon vorhanden sind, dann müssen die nicht nochmal geschrieben werden, sollten aber hier bei diesem Beispiel aber der richtigen Reihenfolge erfolgen.
Eventuell kann man bei ALL-INKL.COM bei RewriteRule das Zeichen ^ weglassen, aber normalerweise gehört es hin.

Welche Lösung jetzt am besten ist, würde ich mit dem Provider sprechen, oder mal auf den Provider-Seiten nach Umleitungsbeispielen suchen.
Wie bereits schon geschrieben, hoffe ich das ich euch nicht zu sehr verwirre.


Mit freundlichen Grüßen

Thomas

Web To Date seit 2004, Siquando Web 12, Pro Web 9, Web Client 

#7

Rainer065

Forum-Sponsor  (116 Punkte)  ·   männlich  ·   Deutschland  ·   Nachricht senden
 https://rainer-mittmann.de

durch Zufall bin ich auf ein Bug gestossen, für den ich bisher noch keine Lösung finden konnte. Enthält eine Adresse "index.php" wird "index.php" nicht entfernt (Beispiel: https://siquando-designs.de/index.php/pro-layouts/karo-flex/ korrekt wäre https://siquando-designs.de/pro-layouts/karo-flex/) und die Seite wird fehlerhaft dargestellt.

Hallo Thomas, es wird ja nicht die aufgerufene Seite fehlerhaft dargestellt, sondern die Startseite der Domain .

Bei dir die https://siquando-designs.de, aber ohne css-Code.

Gruß Rainer

#8

Thomas

Moderator  (2324 Punkte)  ·   männlich  ·   Deutschland  ·   Nachricht senden
 https://siquando-designs.de

Stimmt, das macht es aber nicht besser, erst recht wenn ein Bot beginnt falsch zu crawlen. Bei dir tritt es im Übrigen auch auf.


Viele Grüße
Thomas

siquando-designs.de (NEU: KARO Flex Layout, Santa Cruz Pro für Pro Shop und Apollon 11 für Siquando Shop, Templateübersicht & Support für Shop 11 + Pro Web 9)

#9

MuggelClan

Forum-Sponsor  (1124 Punkte)  ·   männlich  ·   Deutschland  ·   Nachricht senden

Das Problem tritt bei jeder Pro-Version auf und das schon seit immer, sogar bei WebToDate NG.
Das die Startseite angezeigt wird (ohne css), das liegt daran, das eben die URL auch mit ..."index.php"... beginnt und diese dann als Datei erkannt wird, wobei es beim Crawl bei Google als gesamter URL mit den Angängen gesehen wird.


Mit freundlichen Grüßen

Thomas

Web To Date seit 2004, Siquando Web 12, Pro Web 9, Web Client 


Dieser Beitrag wurde bereits 1 mal bearbeitet, zuletzt von »MuggelClan« (27.11.2024, 12:44)
#10

Rainer065

Forum-Sponsor  (116 Punkte)  ·   männlich  ·   Deutschland  ·   Nachricht senden
 https://rainer-mittmann.de

Hallo, der von Thomas (MuggleClan) gezeigte Code funktioniert bei mir nicht. Mein Provider ist all-inkl.com
Bei mir funktioniert folgender Code:

RewriteRule ^index\.php/(.*) /$1 [L,R=301,NC]


Den Code habe ich hinter RewriteEngine On und vor RewriteBase / eingefügt.

Edit: Der Code funktioniert auch am Ende der htacces-Datei, vor </IfModule>.

Gruß Rainer


Dieser Beitrag wurde bereits 3 mal bearbeitet, zuletzt von »Rainer065« (27.11.2024, 14:12)
#11

MuggelClan

Forum-Sponsor  (1124 Punkte)  ·   männlich  ·   Deutschland  ·   Nachricht senden

Hallo Rainer,

vielen Dank für den Hinweis, es ist auf jeden Fall das / hinterm .php wichtig, da ansonsten ohne / die index.php Dateien auch in den realen Ordner betroffen sind und dann ProWeb nicht mehr richtig läuft. Gild auch für die generierten index.php, die dann auch fälschlicherweise betroffen wären.


Mit freundlichen Grüßen

Thomas

Web To Date seit 2004, Siquando Web 12, Pro Web 9, Web Client 

#12

Thomas

Moderator  (2324 Punkte)  ·   männlich  ·   Deutschland  ·   Nachricht senden
 https://siquando-designs.de

In Plesk konnte ich den Fehler nun beheben indem ich die PHP-Engine auf FPM-Anwendung (Apache) geändert habe.


Viele Grüße
Thomas

siquando-designs.de (NEU: KARO Flex Layout, Santa Cruz Pro für Pro Shop und Apollon 11 für Siquando Shop, Templateübersicht & Support für Shop 11 + Pro Web 9)

1628 Aufrufe | 12 Beiträge