看到这题目不要觉得土!这个问题不是简单意义上的Rewrite功能代码,有自己的特殊性。
HzlzH搜索了很多帖子,都未曾提及详细,于是发出来
事件起因:网站搬家,觉得开始使用wordpress固定链接功能,即伪静态。
目标:zlz.im/?tag=paypal 301重定向到 zlz.im/tag/paypal/
PS:wordpress自带的rewrite代码只能实现下面几组跳转,分别是:
| /?p=*** | 定向到 | /**name** | 文章链接 |
| /?cat=*** | 定向到 | /cat/**name** | 栏目链接 |
| ?m=20100101 | 定向到 | /2010/01/01/ | 归档链接 |
| ?page_id=61 | 定向到 | /**name** | 单独页面链接 |
| ?page=5 | 定向到 | /page/5 | 分页链接 |
唯独 /?tag=*** 没有301定向到 /tag/***
—————————–
下面是我写的成功了的 htaccess.文件,其中最后两段代码就是实现tag重定向的代码。
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] RewriteCond %{HTTP_HOST} !^zlz.im$ [NC] RewriteRule ^(.*)$ http://zlz.im/$1 [L,R=301] RewriteCond %{QUERY_STRING} ^tag=(.+) RewriteRule ^$ tag/%1? [L,R=301]
解释一下:这里的RewriteCond %{QUERY_STRING} ^tag=(.+) 是解决?号是别的问题;
^$ tag/%1? [L,R=301]中最后那个问号,不是符号,是? : 三元操作符的意思,只有这样才能告诉地址把后面的内容舍去。
最后,感谢KZ 帮忙一起测试了N久,至此本站所有链接全部都成功301指向新链接,为期一天的搬家结束!
看得似懂非懂,呵呵,等我有空的时候多多揣摩下,博友真有才!
@itql 如果你也要折腾 固定连接,肯定要用这个,哎,太幸福了你
这样就行了啊
@kangzj 这也是我再 N+1次试验后,才发现了诡异的 问号操作符的碍事
学习之用.网络传真
不错,学习一下
这个东西真管用!学习,收藏先!我那天给自己网站改了一小项就派上了很大的用场!
@Kada 是啊,htaccess能实现的功能特多
我的网站搬家出问题了!郁闷
@itql, 本文的内容需要Linux 主机的.htaccess 支持
tag/%1? [L,R=301]中最后那个问号,不是符号,是? : 三元操作符的意思,只有这样才能告诉地址把后面的内容舍去。
学习了。。一直为这个问题困绕
http://blog.yayuan.org/180 我就是不会加后面的?号。所以后面总是加上那请求的参数,,如果不是301,或者是301转到动态页,则没有问题。因为动态页本来有个参数了。后面他就不会再加参数。
测试成功。。
太感谢你了。。哈哈
@亚元博客: