关于 RewriteRule规则 动态页301重定向到静态页

来源:百度知道 编辑:UC知道 时间:2024/09/22 03:56:58
网站以前是动态页,现在要301重定向到已经生成的动态页,想达到下面的效果,就是访问 /shownews.asp?id=1 301重定向到 /news/1.html
我自己写了下面的规则不能用,急求高手相助,先谢谢了!
RewriteRule /shownews\.asp\?id=$1 /article/(\d+)\.html [NC,R=301]
RewriteRule ^/shownews\.asp\?id=(\d+) /news/$1.htm 这样写的话已经可以读取到到news目录下的*.htm文件了,但是现实的网页还是shownews.asp?id=*。
在后面加上[NC,R=301] 就又和什么都没有做一样了,恳请高人指点。附:我用的是 ISAPI Rewrite Lite v3.1 绿色版,服务器是2003、IIS6.
——再补充:我的网站以前是动态的,现在要改成纯静态并且已经生成了纯静态页,不想损失以前搜索引擎对旧网页的收录,所以才考虑做301重定向。也就是说访问shownews.asp?id=222时会直接301转向到我已经生成的纯静态页面news/222.htm,但是上面的方法不行,不知道哪里错了。换一种解释就是我想访问shownews.asp?id=222时直接301永久重定向到页面news/222.htm,并且最终地址栏里显示的是news/222.htm;而不是只是访问的页面映射到news/222.htm地址栏里还是现实以前的动态地址。
谢谢您的细心讲解,更期盼您能帮助我解决问题。
_________我虽然生成了但是并没有让搜索引擎索引,如果不能解决我是不会用静态页面的。我用301不是为了伪静态,而是为了永久迁移,告诉搜索引擎我以前的页面不要了,都转移到新的地方了,这样以前的收录和排名就会转移到新的页面。

首先,先帮你解决一下rewriterule的问题。rewriterule后面的是匹配规则,是一组正则表达式, ^/shownews\.asp\?id=(\d+) 写的没有问题。再后面的是要定向到的地址,地址里有$1参数,指的是前面匹配的(\d+)。加上[NC]就表示不区分大小写,R=301实际上会将前面的shownews.asp?id=222 直接跳转到news/222.htm。所以加上这句后地址栏的shownews.asp?id=222 会变成news/222.htm,但实际访问的还是shownews.asp?id=222。
不过如果是初学者这些东西是很难理解的。如果你只是临时用而不想深入研究的话你可以把你的需求写清楚发送到我邮箱里面我帮你写规则。邮件地址:qiang_killer@126.com

其次,你的重定向对网站本身意义不是很大,做301定向最主要的目的是做伪静态,也就是搜索引擎亲和。如果你的网站已经生成静态页了,那大可以直接用静态地址访问而无须做301定向。