2017-12-18 12 views
0

Ich habe eine harte Zeit bekommen eine permanente Umleitung zu arbeiten. Ich möchte das mit regulären Ausdrücken machen.htaccess Regex 301 Redirect

ALTE URL: https://example.com/olddir/other_name_here/123456/garbage.jpg

NEW URL: https://example.com/newdir/other-name-here-123456/

Hinweis der Wechsel von Unterstrichen und die Tatsache, Striche, dass ich die zusätzlichen Bits weg, nachdem der numerischen Folge bin zu werfen. Ich habe das versucht, aber es funktioniert nicht (Seite existiert nicht und immer noch eine 404):

RewriteRule ^/olddir/other_name_here/([0-9] {6}) /.+/newdir/other-name-here- $ 1/[R = 301, L]

Ich habe ein paar hundert Namen im Verzeichnis "other_name_here", also wenn ich Unterstriche dynamisch zu Bindestrichen ändern könnte, wäre das gut, aber nicht notwendig . olddir und newdir sind tatsächliche Namen und können fest codiert sein. Was mache ich falsch? Vielen Dank!

+0

haben Sie hinzugefügt, um die folgenden Zeilen zu '.htaccess' Datei und vor dem' RewriteRule'? Zeile 1: 'Optionen + FollowSymLinks' Netz2:' RewriteEngine On' auch eine '$' nach dem '' hinzufügen ([0-9] {6}) /.+ ' Last but not least, Sind Sie sicher, dass Ihre neue URL existiert (die Datei ist auf dem Server verfügbar)? – Allan

Antwort

0

Versuchen Sie, die folgenden Aktionen aus:

  • Wenn er nicht in Ihrem .htaccess fügen Sie die folgenden zwei Zeilen vor Ihrer RewriteRule:

    Options +FollowSymLinks 
    RewriteEngine On 
    
  • ändern regex auf folgende Weise eine $ durch Hinzufügen :

    RewriteRule ^/olddir/other_name_here/([0-9]{6})/.+$ /newdir/other-name-here-$1/ [R=301,L] 
    
  • Versuchen Sie, direkt auf Ihre neuen URL-Seiten zuzugreifen und zu bestätigen, dass sie zugänglich sind.

Schließlich möchte ich diese Website für Details über die .htaccess detaillierte Konfiguration empfehlen: https://mediatemple.net/community/products/dv/204643270/using-htaccess-rewrite-rules