301重定向不起作用

时间:2016-01-12 16:46:38

标签: asp.net .htaccess redirect

我重新设计了一个网站(以前的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

1 个答案:

答案 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]