我需要使用htaccess创建301重定向。
示例:
拿这个网址(旧):domain / page.html?pid = 21& cid = 730:pagetitle
重定向到(新):http://www.domain.co.uk/page/section/pagetitle
我试过这个,但是不行:(
##([0-9]+)?
RewriteCond %{QUERY_STRING} pid=21&cid=[0-9]{1,5}:(.*)
RewriteRule ^/page.html http://www.domain.co.uk/page/section/%1? [NC,R=301]
pagetitle和cid是动态的,会随着时间而改变。
理想情况下,我想使用旧网址并将所有内容与pagetitle(domain / page.html?pid = 2& cid = 730:pagetitle)分开,然后将其用作我的重定向网址的查询字符串.... / p>
感谢
更新:
更多示例:
自:
http://www.domain.co.uk/page.html?pid=1&cid=25:helloworld
http://www.domain.co.uk/page.html?pid=1&cid=34:hellonew-world
http://www.domain.co.uk/page.html?pid=1&cid=21:1pagetitle
要:
http://www.domain.co.uk/page/section/helloworld
http://www.domain.co.uk/page/section/hellonew-world
http://www.domain.co.uk/page/section/1pagetitle
注意:section = pid 1
使用Omega或Mine重写规则的结果现在提供404页面。
我只需要查询字符串的最后一部分 - cid(页面标题),pid并不重要。
答案 0 :(得分:0)
要保留查询字符串参数,而不是[NC,R=301]
使用[NC,R=301,QSA]
RewriteCond %{QUERY_STRING} cid=[0-9]{1,5}:(.*)
RewriteRule ^/?page\.html$ http://www.domain.co.uk/page/section/%1 [NC,R=301,QSA]
答案 1 :(得分:0)
我认为使用{1,5}可能是您的版本中的问题。该语法可能无法使用。
但是这个版本应该可以正常工作:
RewriteCond %{QUERY_STRING} ^pid=21&cid=[0-9]+:(.*)$
RewriteRule ^page\.html http://www.domain.co.uk/page/section/%1 [NC,R=301,L]