2017-12-18 18 views
0

永続的なリダイレクトが機能しなくなっています。正規表現を使って、これが起こりたいと思います。htaccess Regex 301 Redirect

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

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

注ダッシュにアンダースコアからの変化と、私は数字の文字列の後に離れて余分なビットを投げていたという事実。私はこれを試しましたが、それは動作しません(ページは存在せず、まだ404を取得しています):

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

私は "other_name_here"ディレクトリの場所に数百の名前があるので、私は動的に下線をハイフンに変更することができます。 。 olddirとnewdirは実際の名前であり、ハードコードすることができます。私は間違って何をしていますか?ありがとう!

+0

はあなた '.htaccess'ファイルと' RewriteRule'前に、以下の行を追加していますか? 1行目: 'オプション+ FollowSymLinks' 回線2:' RewriteEngine on'の はまたあなたの ''の後に '$'を追加します([0-9] {6})/.+ '少なくとも最後にではなく、 、新しいURLが存在することを確認してください(ファイルはサーバー上で利用可能です)。 – Allan

答えて

0

次の操作を実行してください

  • もし存在していない、あなたの.htaccessであなたのRewriteRule前に以下の2行を追加します。

    Options +FollowSymLinks 
    RewriteEngine On 
    
  • $を追加することによって、次のようにあなたの正規表現を変更:

    RewriteRule ^/olddir/other_name_here/([0-9]{6})/.+$ /newdir/other-name-here-$1/ [R=301,L] 
    
  • 新しいURLページに直接アクセスし、アクセス可能であることを確認してください。

最後に、私は.htaccess詳細な構成についての詳細は、このウェブサイトをお勧めします:https://mediatemple.net/community/products/dv/204643270/using-htaccess-rewrite-rules