分享

西部数码win主机如何通过RewriteRule实现批量301重定向

 航空百科 2015-11-07

西部数码win主机如何通过RewriteRule实现批量301重定向


困扰自己很久的问题今天终于得以解决,看我先前写的文章的朋友肯定知道cnkjun为了实现301费了不少精力,也花费了不少时间。虽然问题一点点的得到解决,但是过程确实很痛苦也很艰辛,不懂技术全靠自己摸索,真的很不容易呀。今天终于通过IIS启用伪静态rewrite组件,利用RewriteRule规则完成了全站的301重定向。


回顾先前所做的尝试,真的觉得好低级好菜鸟呀,利用RewriteRule语句不到半小时就完成了所有操作,而之前几次尝试,如果展开没有几天是完成不了的。不过也应该庆幸先前费时费力的坚持,今天才终于攻克了一个难题。有兴趣的朋友可以看下我先前尝试的操作:



在跟大家分享RewriteRule实现的方法前,还是先吐下槽,和cnkjun一样的菜鸟应注意:


1)、度娘只是个工具,想从上面直接找到答案,很难,想彻底的解决问题,靠自己!


2)、搜索而来的很多方法都是千篇一律的,有的可能都未经验证,不可轻信,不然可能会掉进更大的坑里。想找到完美的解决方法,靠自己!


3)、相应的QQ群、贴吧、问答系统,能耐心回答并帮助你的人很少很少,不要奢求通过别人来解决问题,靠自己!


4)、各种问题会接踵而至,不要灰心,坚持!坚持!坚持!总会有解决的方法的,这个过程同样只能靠自己!


5)、虽然我现在仍是小白,且很多问题解决之后我也说不出个所以然来,不过没关系,我可以一点一滴的积累,因为我清楚,我只能靠自己!


好了,以上算是cnkjun和菜鸟们共勉的话吧。进入正题了,我来跟大家分享下西部数码win主机如何通过RewriteRule实现批量301重定向(需要和我相同主机的同学们可以通过以下链接购买,这样创业路上我们也可以有个伴:http://www.west.cn/services/CloudHost/?ReferenceID=733163):


1、 打开网站管理助手点击创建站点进行创建,如果已经创建,双击站点进行编辑。


西部数码主机提供的网站管理助手

西部数码主机提供的网站管理助手


如上图所示,根据自己的网站系统选择相应的规则,我使用的phpcms,所以选择phpcms,如果里面没有对应的规则,可以选择diy。然后点击“立即创建”,完成设置


2、打开网站目录下的others文件夹,找到httpd.conf,使用记事本或其他文本编辑软件打开。


西部数码主机提供的httpd.conf文件

西部数码主机提供的httpd.conf文件


上图是我直接借用西部数码官网的,RewriteRule可以根据自己需要进行保留替换。不过相信很多朋友最头疼的就是这些规则,初次接触的话跟读天书无异。cnkjun也是,最初我也知道可以通过这个途径实现301重定向,可是看到这些代码我就懵了,肯定玩不了。我先后两次在百度知道悬赏求解,可是最后也没有一个靠谱的答案。


读懂这些代码的关键是了解正则表达式,且会加以运用。先前我也花了半天时间专门学习了一下,由于初次接触,当时比较蒙,没搞出个所以然来。今天专门请假一天,决心一定将此问题攻克。花了一上午的时间研究学习后,尝试了多次后终于有了结果。现在看看,其实正则表达式也没有想象中的那样深奥难懂,静下心来肯定学的会的。


以下是我实现301跳转的规则语句:RewriteRule ^/Missile_pic/(\d+)_(\d+).html$ http://www./Missile_pic/$2.html [R=301,NC]


我来解释下,这条语句主要目的是实现形如http://www./Missile_pic/20141130_453.html的url跳转至http://www./Missile_pic/453.html,即省去年月日。


^表示字符串的开始,$匹配结尾;


20141130_453.html用正则表达式可以表示为(\d+)_(\d+).html ,其中的“\d+”表示重复一次或多次的数字。


^/Missile_pic/(\d+)_(\d+).html$ 就表示形如…/Missile_pic/年月日_id.html的文章url;


$2表示/(\d+)_(\d+).html中的第二个括号内的内容,即id信息,如果是$1,那当然就表示第一个括号内的内容,即年月日,至于为什么是这样,查下正则表达式的教程就明白了,在此不再科普了。


[R=301,NC],R=301这个就不用解释了吧,这是我们的目的所在。NC表示不区分大小写。


规则写好后,将文件保存,最好重启下IIS,然后在测试下需要跳转的页面吧,很有成就感吧!


在此再补充一点,如果您想变更目录结构,那么使用RewriteRule如何301重定向如何做?这个也很简单,相同的东西就不用考虑改变,因为其本身就是最准确的正则表达式,只需要将不同之处用正则表达式的元字符、限定符等替换就好。


比如形如:http://www./aviation_pic/aviation_pic_news/20121126_75.html的页面跳转到http://www./aviation_pic_news/20121126_75.html(即减少一级目录),那么正则的写法就为:RewriteRule ^/aviation_pic/aviation_pic_news/(\d+)_(\d+).html$ http://www./aviation_pic_news/$1_$2.html [R=301,NC]。


如果需要将目录结构即页面名称一同更改,即上面提到的两种结构整合到一起,那么规则写法就是:


RewriteRule ^/aviation_pic/aviation_pic_news/(\d+)_(\d+).html$ http://www./aviation_pic_news/$2.html [R=301,NC]。


这样跳转之后就实现了:http://www./aviation_pic/aviation_pic_news/20121126_75.html


向页面http://www./aviation_pic_news/75.html的301跳转,怎么样,试试吧,很强大吧。


文章写的较为啰嗦,不知到各位能否看懂,不懂的直接可以联系我,一定尽力协助,我的qq:593937893,请注明来自cnkjun的博客。


cnkjun


本站原创文章,欢迎转载,但请务必注明出处,感谢您尊重cnkjun的劳动成果!cnkjun的博客 ? 西部数码win主机如何通过RewriteRule实现批量301重定向

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多