0

我需要使用 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 是动态的,并且会随着时间的推移而改变。

理想情况下,我想采用旧 url 并将所有内容从 pagetitle (domain/page.html?pid=2&cid=730:pagetitle) 中剥离出来,然后将其用作我的重定向 url 的查询字符串....

谢谢

更新:

更多示例:

从:

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 或我的重写规则的结果目前给出了 404 页。

我只需要查询字符串的最后一部分 - cid(页面标题),pid 不重要。

4

2 回答 2

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]
于 2012-09-22T20:41:33.960 回答
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]
于 2015-09-11T14:09:11.320 回答