.htaccess mod_rewrite,包括查询字符串


.htaccess mod_rewrite that include query strings

我有一些需要重写的示例url:

RewriteCond %{QUERY_STRING} ^blue-spares-cycle-for-cancer-research$ [NC]
RewriteRule ^news/news-item/?$ http://www.blue-group.com/en/news/ [R=301,L]
RewriteCond %{QUERY_STRING} ^blue-spares-appoints-stuart-truckel-as-sales-director$ [NC]
RewriteRule ^news/news-item/?$ http://www.blue-group.com/en/news/ [R=301,L]
RewriteCond %{QUERY_STRING} ^project-manager-blue-machinery-london-ltd$ [NC]
RewriteRule ^about-us/careers/careers-item/$ http://www.blue-group.com/en/about/careers/ [R=301,L]
RewriteCond %{QUERY_STRING} ^000841:bakers-star-screen$ [NC]
RewriteRule ^used-machinery/en/screeners/used-machinery-item http://www.blue-group.com/en/used-machinery/ [R=301,L]
RewriteCond %{QUERY_STRING} ^000751:baler$ [NC]
RewriteRule ^used-machinery/en/other/used-machinery-item http://www.blue-group.com/en/used-machinery/ [R=301,L]
RewriteRule ^(.*)$ index.php/$1 [L]

我的问题是我有许多类似的url。我需要为每一个都创建新的RewriteCond吗?

同时我得到的结果是这样的,例如:

http://www.blue-group.com/en/used-machinery/?000751:baler

快速谷歌搜索显示:

保持原始查询(默认行为)

RewriteRule ^page'.php$ /target.php [L]
# from http://example.com/page.php?foo=bar
# to   http://example.com/target.php?foo=bar

丢弃原始查询(注意?后目标)

RewriteRule ^page'.php$ /target.php? [L]
# from http://example.com/page.php?foo=bar
# to   http://example.com/target.php

替换原查询

RewriteRule ^page'.php$ /target.php?bar=baz [L]
# from http://example.com/page.php?foo=bar
# to   http://example.com/target.php?bar=baz

将新查询追加到原查询(这里的关键是QSA)

RewriteRule ^page'.php$ /target.php?bar=baz [QSA,L]
# from http://example.com/page.php?foo=bar
# to   http://example.com/target.php?foo=bar&bar=baz

原文