2012-04-20 4 views
7

Wir haben eine Website, leider haben alle URLs die .html Suffix, es ist eine Magento Installation, Magento erlaubt es Ihnen, dies auf dem CMS zu ändern, aber leider wieder all diese URLs mit .html Suffix habe ein gutes Ranking in Google. Wir müssen zu non .html umleiten.Entfernen von .html von URLs mit einer Umleitung

Betrachten wir das folgende Szenario, wir bauen diese Site von Grund auf neu auf, also haben wir dieselben URLs auf der neuen Site, aber ohne das Suffix .html.

  • Jetzt ist: www.example.de/cool-shoes.html
  • Wird: www.example.de/cool-shoes

So www.example.de/cool-shoes.html wird nicht mehr existieren, und ich habe mit dem .htaccess ohne Glück eine Umleitung versucht.

Ich habe bisher versucht:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/ 
RewriteRule (.*)index\.html$ /$1 [R=301,L] 

und:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.*)$ $1.html 

, aber es scheint nicht zu funktionieren ... irgendwelche Ideen?

Antwort

8

Ok so, nach einigen Recherchen, und falls dies nicht mit einer Rewrite-Regel zu erreichen, die folgende Codezeile gearbeitet:

redirectMatch 301 ^(.*)\.html $1 

Das ist ganz nützlich ist, jede URL-Erweiterung zu entfernen und defekte Links zu vermeiden, hoffentlich hilft jemandem in der Zukunft ...

Prost!

+0

hallo, nur um meine Zweifel zu klären, was macht diese Regel? es ist nicht so, dass der erste Parameter der Ausdruck ist, den Sie von der Anfrage erhalten und der zweite der, den Sie an Apache senden werden? sie sollten geschaltet werden ->^(. *) $ 1.html – alexserver

+0

Diese Regel entfernt die '.html'. Der erste Teil ist, was es zusammenpasst: Jede URL, die eine '.html' hat. Die "$ 1" steht in der Klammer der Übereinstimmung: alles außer der '.html'. –

+0

Ich würde ein '$' hinzufügen, um sicherzustellen, dass die '.html' am Ende der URL steht:' redirectMatch 301^(. *) \. Html $ $ 1' –

1

Dies sollte den Trick:

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

Danke, aber nichts scheint sich zu ändern, ich weiß, ich kann nur das Präfix auf dem Magento CMS entfernen, aber auf Wiedersehen Google Ranking ... wofür ist das "w +"? soll ich [R = 301, NC] ODER ETWAS verwenden? –

+0

Nun, was dies tut ist, dass es jede Anfrage mit der Endung .html (\ w + stimmt mit allen Nicht-Null-Strings von alphanumerischen Zeichen) ab und es leitet es an die gleiche Adresse, aber ohne die .html. Ich nehme an, Sie wollen etwas anderes, und Vikas Lösung scheint wie eine nette –

+0

Danke Kumpel, ich denke, Sie gehen den richtigen Weg, Vikas Lösung ist gut, aber wie ich oben erklärt, nur für Fälle, in denen die URL existiert, in diesem Fall Diese URL (.html) wird entfernt, und ich möchte, dass alle Benutzer ohne die HTML-Datei zur neuen URL weitergeleitet werden. Ich bearbeite die Haupt-.htaccess und fügte die Zeile hinzu, die du an der richtigen Stelle vorgeschlagen hast, aber es wird keine Umleitung vorgenommen, vielleicht mache ich es falsch, indem ich diese Zeile in der Haupt-.htaccess-Datei der ganzen Magento-Installation anfüge eine separate .htacess für diesen Shop (Ich habe eine Multishop-Installation) Danke! –

1

Folgen der steps, und Sie werden in der Lage .html von URL zu entfernen, ohne .htaccess-Datei zu ändern.

+0

Danke, das funktioniert nur, wenn Ihre Seiten das Suffix .html hatten, aber in diesem Fall existiert diese Seite mit .html nicht. Es existiert zwar auf der alten Seite, aber nicht in der neuen, also wird jedes Mal, wenn jemand nach dem alten ulr (www.mysite.de/thing.html) geht, auf www.mysite.de/thing umgeleitet, stattdessen auf 404 Not gefunden. Ich denke, das kann mit htaccess erreicht werden, oder? –

+0

Eine Link-Only-Antwort ist nicht von hoher Qualität. Der verknüpfte Inhalt könnte sich ändern oder nicht mehr verfügbar sein. Es ist auch nicht benutzerfreundlich, Leute dazu zu bringen, auf die Antwort zu klicken. Es wäre besser, hier die Schritte zumindest zusammenzufassen. –

0

Versuchen Sie dies in Ihrer .htaccess-Datei zu setzen Redirect permanent www.mysite.de/cool-shoes.html www.mysite.de/cool-shoes dies für Sie hilfreich sein können

8

Dieser Wille schreibt die uRL wie so http://example.com/page.html ->http://example.com/page

# Remove .html from url 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.*)$ $1.html 
+0

Dieser Code scheint ein '.html' nicht entfernen hinzuzufügen es. Es scheint auch eine Rewrite-Regel zu sein, keine Umleitungsregel. Es würde '[R = 301, L]' am Ende benötigen, um eine Umleitung vorzunehmen. –

2

Versuchen sie folgendes in die .htaccess-Datei im Stammverzeichnis Ihrer Website umleiten URLs mit Html-Erweiterung hinzufügen und entfernen.

Options +FollowSymLinks -MultiViews 
DirectorySlash Off 

RewriteEngine On 

RewriteCond %{SCRIPT_FILENAME}/ -d 
RewriteCond %{SCRIPT_FILENAME}.html !-f 
RewriteRule [^/]$ %{REQUEST_URI}/ [R=301,L] 

RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteRule ^(.+)\.html$ /$1 [R=301,L] 

RewriteCond %{SCRIPT_FILENAME}.html -f 
RewriteRule [^/]$ %{REQUEST_URI}.html [QSA,L] 
1

Hier ist die Lösung, die für mich arbeitete.

RewriteCond %{THE_REQUEST} \.html [NC] 
    RewriteRule ^(.*)\.html$ /$1 [R=301,L] 

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

Diese Regeln sehen dann aus, wenn Ihr Server Dateien enthält, die auf '.html' enden, aber nicht '.html' in den URLs angezeigt werden sollen. –

0

Dies ist für URLs mit der Endung .html /product/raspberrypi.html --->/product/Raspberry Pi/(/product/raspberrypi/index.php) das index.php versteckt ist. Nahm mich eine Weile, um das herauszufinden. LOL ...

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_URI} \.html$ 
RewriteRule ^(.*)\.html$ $1 [R=301,L] 

RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

Sie haben ‚REQUEST_URI‘ zu verwenden und sie vor Index umleiten Regeln hinzufügen, da sie durch die Anwendung außer Kraft gesetzt werden könnte. Es ist wichtig zu wissen, dass sein URI kein Dateiname oder Verzeichnis ist, das wir umzuleiten versuchen, da die Dateinamen alle index.php in den Stammordnern (Wordpress) haben.

Verwandte Themen