我重新设计了一个网站(以前的windows / asp),新网站在wordpress上运行。
所以我想在所有旧链接上进行301重定向,但不知怎的,这不起作用,我是.htaccess重定向的新手。
Redirect 301 /index.asp http://balbla.com/#work
Redirect 301 /index.asp?ID=177 http://blabla.com/portfolio/blablatitle/
似乎全都落后于“?”被忽略了。因为blabla.com/index.asp?ID=177
现在重定向到http://balbla.com/#work?ID=177
任何人都可以帮助我吗?
所以这些是url的不同模式类型,每个都应该重定向到不同的页面:
Mainpages:
/index.asp?inc=index.asp&typ=Nav1&cat=2
/index.asp?inc=index.asp&typ=Nav1&cat=3
...
组合-页数:
/?inc=index.asp&ID=5
/?inc=index.asp&ID=24
/?inc=index.asp&ID=147
子页面:
/index.asp?inc=agentur/advertising.asp
/index.asp?inc=agentur/design.asp
/index.asp?inc=agentur/dialog.asp
答案 0 :(得分:1)
除了下面讨论WordPress和mod_rewrite的问题/答案:
.htaccess 301 redirect not working?
为了匹配查询字符串,您需要在条件中使用mod_rewrite并对QUERY_STRING
进行测试。例如:
RewriteEngine On
RewriteCond %{QUERY_STRING} =ID=177
RewriteRule ^index\.asp$ http://blabla.com/portfolio/blablatitle/ [R=301,L]
RewriteRule
模式(即。^index\.asp$
)仅与URL路径匹配,特别是在每个目录.htaccess文件中排除斜杠前缀。
请注意,上面的 CondPattern (即=ID=177
)使用=
运算符,因此是一个简单的字符串比较(与正则表达式相反)。
需要首先显示更具体的重定向,最常见的(全能)重定向最后。
正如评论中所述,为了使这更加通用并将/index.asp?inc=index.asp&ID=NNN
形式的所有网址(其中NNN
为任意3位数)重定向到单个网址,您可以执行以下操作:
RewriteCond %{QUERY_STRING} ^inc=index\.asp&ID=\d\d\d$
RewriteRule ^index\.asp$ http://blabla.com/portfolio/blablatitle/ [R=301,L]