2017-12-18 454 views
0

我很难得到永久重定向工作。我希望使用正则表达式来实现这一点。htaccess正则表达式301重定向

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

新的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

请尝试以下操作:

  • 如果未出现在.htaccessRewriteRule之前添加下面两行:

    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