Kategorie URLs mit .html Weiterleitung (htaccess?)

Hallo,

wir möchten gern bei URLs die mit .html am Ende aufgerufen werden (alte URLs von Google) weiterleiten zu der selben URL nur eben ohne .html. Das habe ich leider nicht hingekriegt. Bei so einer URL mit .html landet man immer auf der Startseite

hier unsere htaccess:

RewriteEngine on

RewriteBase /

# Https config for the backend
#RewriteCond %{HTTPS} !=on
#RewriteRule backend/(.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteRule shopware.dll shopware.php
RewriteRule files/documents/.* engine [NC,L]
RewriteRule backend/media/(.*) media/$1 [NC,L]

RewriteCond %{REQUEST_URI} !(\/(engine|files|templates|themes|web)\/)
RewriteCond %{REQUEST_URI} !(\/media\/(archive|banner|image|music|pdf|unknown|video)\/)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ shopware.php [PT,L,QSA]

RewriteCond %{HTTPS} !=on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]

# Fix missing authorization-header on fast_cgi installations
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

wie muss ich das in Shopware einstellen?

http://www.htaccessredirect.de/

Würde „Redirect auf eine andere Website“ nutzen

@raymond‍ und jetzt soll ich für jede einzelne Seite die es im Shop gibt (wohl um die 20.000) einen eigenen Eintrag in der htaccess machen?

Muss doch eine automatische Möglichkeit geben, um das .html einfach wegzulassen und ansonsten die URL zu nutzen.

So wie man für HTTP auch einstellen kann, dass die URL auf die selbe URL mit HTTPS umgeleitet wird.

Ja sicher, das hat aber konkret nichts mit Shopware zu tun. Erkundige Dich bei Tante Google nach Umleitungen (rewrite) in der .htacces und wie man so etwas mit Hilfe von regular expressions (regex) macht.

@drakon‍ das hab ich natürlich gemacht, deshalb hab ich ja meine htaccess oben gepostet. Habe bei Google vieles gefunden, nichts hat funktioniert. Deshalb wollte ich wissen, ob man das mit Shopware irgendwie speziell machen muss…

u.a. das hier

RewriteRule ^([^\.]+)$ $1.html [NC,L]

oder auch

RewriteRule ^(.+)\.html$ /$1 [L,R=301]

 

Nein, das hat wie gesagt mit Shopware nichts zu tun. Aber die Anweisungen sind falsch, das + kodiert mind. eines oder mehrere Zeichen. Das Sternchen wäre richtig, weil Zeichen auch gar nicht vorkommen können (das erste Beispiel ist aber komplett sinnlos).

RewriteRule ^(.*).html$ /$1 [L,R=301]

Die Anweisung sollte dann ganz vorne direkt nach dem „RewriteEngine On“ eingebaut werden, damit es vorrangig vor den anderen Anweisungen behandelt wird.

1 „Gefällt mir“

Wieso importierst du die alten URLs mit entsprechendem Matching nicht in die Datenbanktabelle s_core_rewrite_urls ?

Bei Umschreibungen, die man mit einer simplen RewriteRule für 20000 verschiedene Adressen lösen kann, ist es doch nicht sinnvoll die Datenbank unnötig aufzublasen und die Last für den Mysql-Server zu erhöhen. Lass das den Apachen machen.

@drakon‍

Danke! diese Variante hat funktioniert

RewriteRule ^(.*).html$ /$1 [L,R=301]